- 1. カスタムホスト名に” _ “(アンダースコア)を使わないようにしている理由
- 2. PHP-クラス-コンストラクタ-実体化と同時に初期処理を実行させる
- 3. PHPのリファレンスとCのポインタの違い
- 4. 【Laravel】XServerでメールをJobで送信するようにする
- 5. 【Laravel】csvの全項目をダブルクォーテーションで囲む方法!
- 6. SOLID原則とは? ~後編 I・D の2原則について解説~
- 7. 【超初心者】クラス-メソッドと疑似変数$this
- 8. PHP 8.4 初のリリース候補がリリース!新しいPHPリリースサイクル戦略が採用されました
- 9. 【PHP】use宣言のグループ化
- 10. 【PHP】演算子の優先順位
- 11. 【Laravel】モックでzipファイルを返却する方法!
- 12. 【PHP8.4】プロパティに非対称な可視性を設定できるようになる
- 13. pgAdminでアカウントロックされたときの対処法
- 14. PHPにおけるメモリ使用量の計測とログ出力
- 15. Laravel11 Eloquent の主キー(ID)を UUID に変更する
- 16. 【PHP】スプレッド構文で配列結合
- 17. laravel+react+Inertiaのプロジェクトを立ちあげる
- 18. SOLID原則とは? ~前編 S・O・L の3原則について解説~
- 19. 【PHP】array_filterの使い方
- 20. 【Laravel】クエリビルダでlatest()->first()やoldest()->first()と書いてはいけない
カスタムホスト名に” _ “(アンダースコア)を使わないようにしている理由
# 先に結論
PHPで**filter_var**を使ってURLサニタイズをすると、**アンダースコアは不正URLとして弾かれてしまう**ため。
代わりに**ピリオド**などを使うのが正しい。
## 経緯
WordPressを使って、リダイレクト機能の実装を行っていました。
サニタイズについて知らなかった頃、慣習としてディレクトリ名と同じカスタムホスト名を付けて、ローカル環境で使用していました。“`
http://example_project
“`この環境下であることを前提に、以下のような関数を実行します。
“` redirect.php
function custom_redirect_sanitize_url($rules) {
$sanitized_rules = [];
$rules = json_decode($rules, true);foreach ($rules as $key => $value) {
if (filter_var($key, FILTER_VA
PHP-クラス-コンストラクタ-実体化と同時に初期処理を実行させる
# はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。https://sls.ideal-growth.jp/12/lesson/311/learning
## クラス-コンストラクタ
インスタンス生成時に、プロパティへの値の代入や、メソッドを実行したい場合があります。PHPでは、__construct というメソッドを実装することで、インスタンス生成時に処理を実行することができます。### サンプルソース
変数名など一部変更しています。“`PHP
class Person
{
public $name;
public $age;// コンストラクタの定義
public function __construct($name, $age)
{
echo “インスタンスが生成されました。\n”;
//渡された引数をプロパティへ代入
$this->name = $name;
$this->age = $age;
}pub
PHPのリファレンスとCのポインタの違い
PHPのリファレンスとCのポインタには、以下のような主な違いがあります:
## 概念の違い
– PHPのリファレンスは、同じ変数の内容を異なる名前で呼び出すための仕組みです。
– Cのポインタは、メモリ上のアドレスを直接扱う仕組みです。## 機能の違い
– PHPのリファレンスでは、ポインタ演算やメモリアドレスの直接操作はできません。
– Cのポインタでは、アドレス計算や低レベルのメモリ操作が可能です。## 実装の違い
– PHPのリファレンスは、シンボルテーブルのエイリアス(別名)として機能します。
– Cのポインタは、実際のメモリアドレスを格納します。## 使用方法の違い
– PHPでは、変数名の前に「&」をつけてリファレンスを作成します。
– Cでは、「*」を使用してポインタを宣言し、「&」でアドレスを取得します。## オブジェクトの扱い
– PHPでは、オブジェクトはデフォルトで参照渡しされます。
– Cでは、オブジェクトのポインタを明示的に扱う必要があります。## 安全性
– PHPのリファレンスは、Cのポインタに比べて安全性が高く、メモリ管
【Laravel】XServerでメールをJobで送信するようにする
# はじめに
こんにちは、エンジニアのkeitaMaxです。
Xserverでメールを送る処理を作成したいと思った時の話です。
本当はSupervisorで動かしたかったのですが、XServerだと動かすことができなさそうだったので困った話です。
Lravael10を使用しました。
# 実装方法
XServerのCronを設定して、Laravelのスケジューラを動かし、
スケジューラに設定してあるqueueを動かす+リスタートするバッチを動かすようにします。# XServerのCron設定
まずXServerのCron設定からCron設定追加をします。
毎分動かすようにするので以下のようにします。
![スクリーンショット 2024-10-08 22.07.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3715123/d87c3f86-24fa-00d6-e680-b45b025ed874.png)
“`
cd /home/xxxxxxxx/hack/src && /us
【Laravel】csvの全項目をダブルクォーテーションで囲む方法!
泉([@izumin_0401](https://twitter.com/izumin_0401))です。
今回は、Laravelでcsvの全項目をダブルクォーテーションで囲む方法を解説しやす!
:::note info
今回は、便利なので「League/Csv」というライブラリを使います。よろしくっす!
:::# ブログ記事はこちら
https://traveler0401.com/laravel-csv-enclosure-double/
# 【Laravel】csvの全項目をダブルクォーテーションで囲む方法
“`php
use League\Csv\Writer;class CsvService
{
public function exec()
{
$csv = Writer::createFromString(”);$csv->forceEnclosure(); // ダブルクォーテーションで囲む
$csv->insertOne($header);
$csv->inser
SOLID原則とは? ~後編 I・D の2原則について解説~
# SOLID原則とは?
**オブジェクト指向における設計原則のこと**
以下の5つの原則の頭文字をとったものです。
1. 単一責任の原則(**S**ingle Responsibility Principle)
2. オープン・クローズドの原則(**O**pen-Closed Principle)
3. リスコフの置換原則(**L**iskov Substitution Principle)
4. インターフェース分離の原則(**I**nterface Segregation Principle)
5. 依存性逆転の原則(**D**ependency Inversion Principle)今回は後編として I, D の2原則をご紹介します!
https://qiita.com/gaky1201/items/1e8eed57b7c8a203f509
## 4. インターフェース分離の原則(**I**nterface Segregation Principle)
**インターフェースによって使用しないメソッドへの依存をさせてはならない。**
という原則になります。
【超初心者】クラス-メソッドと疑似変数$this
# はじめに
SLスタジオでPHP・WEB開発を独学中のアラフィフ主婦の忘備録です。https://sls.ideal-growth.jp/12/lesson/310/exercise/991
## クラス-メソッドと疑似変数$this-
### 処理内容
MathOperationクラスに定義されているaddメソッドを呼び出す。addメソッドの引数には、それぞれプロパティの値とprocessメソッドに渡された引数の値を使用する。### 解答・解説 のサンプルソース
変数名など一部変更しています。“`PHP
class MathOperation
{
public $value = 10;function add($value1, $value2)
{
echo $value1 . ‘ + ‘ . $value2 . ‘ = ‘ . ($value1 + $value2) . “\n”;
}// process メソッドを追加
function process($value)
{
PHP 8.4 初のリリース候補がリリース!新しいPHPリリースサイクル戦略が採用されました
## RC1 リリース
![PHP 8.4 RC1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5xgqth1q49i73agg14w.png)
PHP 8.4の初のリリース候補(RC1)がリリースされました。PHP 8.4-RC1は、PHP 8.4リリースサイクルにおける重要なマイルストーンであり、[PHP開発](https://support.servbay.com)ブランチから分岐し、機能凍結状態に入ります。
これ以降、PHP 8.4ブランチは公式リリース(GA)に向けてバグ修正のみを受け付けることになります。公式リリースは2024年11月21日に予定されています。初のGAバージョンであるPHP 8.4.0の前に、さらに3つの候補(RC2、RC3、RC4)がリリースされる予定です。
PHP 8.4は、新しいPHPリリースサイクル戦略を採用した最初のバージョンです。**2年間のアクティブサポート**の後に**2年間のセキュリティ更新**を受ける予定です。
## 新しいPHPリリースサイクル戦略
【PHP】use宣言のグループ化
### Before
“`php
【PHP】演算子の優先順位
変数`$hoge`が`null`だったら`true`を返したい処理を書いてたとき、
演算子の優先順位で少し詰まったので、備忘録として残します。“`php
$hoge = null
return (bool) $hoge ?? true;
“`これはtrueが返りそうですがfalseが返ります。
実は型キャスト演算子は、優先的に処理される部類の演算子です。
PHPのリファレンスによると、型キャスト演算子 → null合体演算子の順で評価されます。
[PHP: 演算子の優先順位 – Manual](https://www.php.net/manual/ja/language.operators.precedence.php)なので、null合体演算子 → 型キャスト演算子の順で評価したいのであれば、
括弧でグループ化してあげて、以下のように優先順位を決めます。
“`php
$hoge = null
return (bool) ($hoge ?? true); // true
“`
【Laravel】モックでzipファイルを返却する方法!
泉([@izumin_0401](https://twitter.com/izumin_0401))です。
今回は、Laravelのモックでzipファイルを返却する方法を解説します!
# ブログ記事はこちら
https://traveler0401.com/laravel-mock-zip/
# 【Laravel】モックでzipファイルを返却する方法
“`php
public function mock()
{
$zip = new \ZipArchive;
$zip_path = tempnam(sys_get_temp_dir(), ‘zip’);if ($zip->open($zip_path) === true) {
// zipファイルにcsvファイルを入れてみる
$csv = implode(“\n”, [
‘id,name’,
‘1,izumi’,
]);
$zip->addFromString(‘sample.
【PHP8.4】プロパティに非対称な可視性を設定できるようになる
PHP8.4で新潟アクセス修飾子が正式採用されました。
なにそれ?
“`php
class Foo
{
public private(set) string $bar = ‘baz’;
}$foo = new Foo();
echo $foo->bar; // OK
$foo->bar = ‘qux’; // エラー
“`読み込みはpublic、書き込みはprivateなプロパティ、通称新潟アクセス修飾子です。
新潟という名前は[大昔にネタでなされた命名](https://rti7743.hatenadiary.org/entry/20100520/1274309263)で、『読めるけど書けない』の例として槍玉に挙げられたというわけです。PHP8.1で似たような`readonly`という修飾子が[導入された](https://qiita.com/rana_kualu/items/ae96400a0a6981eca64a)のですが、これは『最初の一回だけ書き込めるけど、一度書き込むと二度と上書きできない』というものであり、実は新潟アクセス修飾子の定義
pgAdminでアカウントロックされたときの対処法
# 前提
+ **Docker Desktopを使用して**localでプロジェクトを立ち上げている。
+ DBにはデータは0だったので初期化されているかどうか分からない。
:::note warn
今回のケースはたまたま上手くいっただけかもしれません。公式では別の方法が記載されていますので不安な方は下を参照してください。
:::
[「pgAdmin アカウントのロック/復元」](https://www.pgadmin.org/docs/pgadmin4/latest/restore_locked_user.html “タイトル”)
## なぜこうなったか
アカウントパスワードを3回以上間違えたから。
初心者なので何が起きたか理解するのに10分かかりました…## 方法
### 1. Docker Desktopを立ち上げる。
※プロジェクト自体は立ち上げなくて良い。### 2.”Volumes”を選択
![スクリーンショット 2024-10-07 16.05.37.png](https://qiita-image-store.s3.ap-northeast-1.amazona
PHPにおけるメモリ使用量の計測とログ出力
PHPでメモリ使用量を計測し、処理前後でその変化をログに記録する方法を解説します。
パフォーマンスを監視し、リソースの無駄遣いを防ぐ際に役立ちます。## メモリ使用量の計測に使用する関数
PHPには、現在のスクリプトのメモリ使用量を取得するための関数がいくつか用意されています。その中でも、よく使われるのが memory_get_usage() です。この関数は、メモリ使用量をバイト単位で返してくれます。### `memory_get_usage` の使い方
“`php
$memoryUsage = memory_get_usage();
“`
これで、スクリプトが使用しているメモリのバイト数が取得できます。また、memory_get_usage(true) と引数に true を指定すると、システムに割り当てられたメモリ(未使用分も含む)を取得できます。## メモリ使用量をメガバイト単位で取得する
memory_get_usage() はバイト単位の数値を返しますが、メガバイト(MB)単位に変換した方が見やすいです。なので、1024で2回割ります。“`php
Laravel11 Eloquent の主キー(ID)を UUID に変更する
## 目的
:::note warn
以前、 [goldspecdigital/laravel-eloquent-uuid](https://github.com/goldspecdigital/laravel-eloquent-uuid) ライブラリを利用して主キーをUUIDに変更する記事を書いていました。https://qiita.com/ucan-lab/items/a8374ba421fe7828dcb9
:::Laravel9以降は [HasUuids](https://laravel.com/docs/11.x/eloquent#uuid-and-ulid-keys) トレイトが利用できるようになりました!
ということでやっていきます。
## 環境
– PHP: 8.3.11
– Laravel: 11.23.5## UUID とは
Universally Unique Identifierの略。
重複する可能性が無視できるほど小さく、一意な識別子として扱えるIDです。生成方法によりバージョン1からバージョン5までの種類があり、今回使用するのはバー
【PHP】スプレッド構文で配列結合
PHP7.4からスプレッド構文が使用可能になりました。
“`php
$array1 = [‘apple’, ‘banana’, ‘peach’];
$result = [‘melon’, …$array1];// 出力結果
Array
(
[0] => melon
[1] => apple
[2] => banana
[3] => peach
)
“`さらにPHP8.1から、キー名に文字列が含まれている連想配列にも対応できるようになりました。
“`php
$array1 = [‘red’ => ‘apple’, ‘yellow’ => ‘banana’, ‘pink’ => ‘peach’];
$result = […[‘green’ => ‘melon’], …$array1];// 出力結果
Array
(
[green] => melon
[red] => apple
[yellow] => banana
[pink] => peach
)
“`同じ実行結果として、PHP組み込み関
laravel+react+Inertiaのプロジェクトを立ちあげる
## はじめに
laravel11を立ちあげる。
windowsで行うがwindows特有の操作はないのでMacユーザーでも使用できると思う。
laravelドキュメントのスターターキット参考にしている。
https://laravel.com/docs/11.x/starter-kits#laravel-breeze## 目次
1.laravelを新規で立ちあげる
2.laravel breezeのパッケージをインストールする
3.laravel breezeのインストール
## laravelを新規で立ちあげる
“`
curl -s “https://laravel.build/プロジェクト名” | bash
“`プロジェクト名のところはディレクトリの名前になるので好きにつけてもらっておっけい。
インストールにかなりの時間を要します。
15分ほど?
PCのスペックが低いのかなぁ~(i5-1135G7)
プロジェクトが立ち上がったら
“`
cd プロジェクト名
./vendor/bin/sail up
“`
をコマンドで実行した後[localhost]をブラ
SOLID原則とは? ~前編 S・O・L の3原則について解説~
# SOLID原則とは?
**オブジェクト指向における設計原則のこと**
以下の5つの原則の頭文字をとったものです。
1. 単一責任の原則(**S**ingle Responsibility Principle)
2. オープン・クローズドの原則(**O**pen-Closed Principle)
3. リスコフの置換原則(**L**iskov Substitution Principle)
4. インターフェース分離の原則(**I**nterface Segregation Principle)
5. 依存性逆転の原則(**D**ependency Inversion Principle)今回は前編として S,O,L の3原則をご紹介します!
https://qiita.com/gaky1201/items/ab791f39d15253902ac4
## 1. 単一責任の原則(**S**ingle Responsibility Principle)
**クラスは一つのことだけ行うべきである。** という考え方に基づいた原則になります。
仮にひとつのクラスに様々な
【PHP】array_filterの使い方
## array_filterとは
“`php
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
“`> (PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
> array_filter — コールバック関数を使用して、配列の要素をフィルタリングするhttps://www.php.net/manual/ja/function.array-filter.php
配列を破壊することなくフィルタリングしてくれる関数です。
【Laravel】クエリビルダでlatest()->first()やoldest()->first()と書いてはいけない
https://readouble.com/laravel/9.x/ja/queries.html#latest-oldest
> latestおよびoldestメソッドを使用すると、結果を日付順に簡単に並べ替えできます。デフォルトでは、結果をテーブルのcreated_atカラムによって順序付けします。もしくは、並べ替えるカラム名を渡すこともできます。`latest()->first()`や`oldest()->first()`だと、`created_at`を基準にレコードを見に行ってしまうため、もしバルクインサートしたデータを取得したい場合、意図しないデータを取得してしまう場合があります。
### 【結論】
`latest()`と`oldest()`の引数に`id`を指定でOK
“`php
latest(‘id’)->first();
oldest(‘id’)->first();
“`