PHP関連のことを調べてみた

PHP関連のことを調べてみた
目次

【超初心者】クラス-メソッドと疑似変数$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.

元記事を表示

PHPの復活:論争から主流への変貌

頻繁に批判されてきたにもかかわらず、PHPは依然として最も広く使用されているサーバーサイドのスクリプト言語の一つです。2023年7月時点で、PHPはウェブサイトの77.4%を支えており、WordPressだけでインターネットの40%以上を占めています。では、なぜこれほど批判されるのでしょうか?
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3885063/0443726b-ec5b-ea27-a9f7-14df511dd2cb.png)

### PHPに対する歴史的な批判
PHPは1995年に初めて登場し、当初は困難な道を歩みました。悪評の理由は次の通りです:

– 不一致性: 不規則な関数名やパラメータの順序が混乱を招きました。
– セキュリティ問題: 初期のバージョンでは、開発者が重大なセキュリティ脆弱性を持つアプリケーションを作成しやすかったです。
– 機能の不完全さ: オブジェクト指向プログラミングの完全なサポートは2004年のPHP 5でようやく実現しました。
– デバッグの

元記事を表示

【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原則をご紹介します!

## 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();
“`

元記事を表示

【PHP】多次元配列内の値に変更を加えたい時

array_walk、array_walk_recursiveを使うとスッキリ書けます。
“`php
// forEach
$array = [
‘hoge1’ => null,
‘hoge2’ => null,
‘hoge3’ => null
];
foreach ($array as $key => &$value) {
if ($value === null) {
$value = 0;
}
}
var_dump($array);
// array(3) {
// [“hoge1”]=>
// int(0)
// [“hoge2”]=>
// int(0)
// [“hoge3”]=>
// &int(0)
// }

// array_walk
$array2 = [
‘hoge1’ => null,
‘hoge2’ => null,
‘hoge3’ => null
];
array_walk($array2, function (&$value) {
if ($value === null) {

元記事を表示

PHPのバージョンを変更する方法

こんにちは!
Laravelのバージョンによって求められるPHPのバージョンが異なることはみなさんご存知だと思います。
この記事では、Laravel Sail、Dockerを用いて現在のPHPのバージョンの確認方法と変更方法について記載したいと思います!

初めての投稿で拙い文章ですが、温かい目で読んでやってください!
# LaravelのバージョンとPHPのバージョンの依存関係
(2024/10 現在)
| Laravelのバージョン | PHPのバージョン |
|:———–|————|
| Laravel 8 | PHP 7.3以上 |
| Laravel 9 | PHP 8.0以上 |
| Laravel 10 | PHP 8.1以上 |
| Laravel 11 | PHP 8.2以上 |

上の表のようにLaravelのバージョンによっては必要とされるPHPのバージョンも異なります。
PHPのバージョンが求められているバージョンを満たしていない場合、意図していた動作

元記事を表示

E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease is not valid yet (invalid for another 10h 25min 3s). Updates for this repository will not be applied.

## はじめに

phpが入っていなく、パッケージを更新しようとしたらエラーが発生した

 
実行コマンド
“`
sudo apt update
“`
 
## 本題

タイトルのように
“`
E: Release file for http://archive.ubuntu.com/ubuntu/dists/focal-updates/InRelease is not valid yet (invalid for another 10h 25min 3s). Updates for this repository will not be applied.
“`

エラーが発生した。
設定されている時間のずれが原因でエラーになる。
 
以下のコマンドで設定された時間を確認できる。
“`
date
“`
これで表示された時間とPC右下に表示されている時間があっているか確認する。
※自分の場合は10時間ほどずれていたので、すぐ気づいた。

 
### 以下の手順で直る。

#### 1.NTPを有効にして時刻を同期する
“`
sudo timedatectl set-ntp

元記事を表示

laravelを新規立ち上げ時にエラー2つ failed to open stream: Permission denied SQL[42S02]:Base table or view not found:1146 Table ‘laravel.sessions’ doesn’t exist

 
## はじめに
laravelを新規で立ちあげる時って必ず権限エラー発生しません?
久しぶりにやったら忘れてて少してこずったのでメモ書きしておきます。

初学者はハマるところなので参考にしていただけたらと思います。

## failed to open stream: Permission denied
![スクリーンショット 2024-10-05 223546.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3832683/36c053c3-14c7-8366-bdd3-ecfd266464d5.png)

必ずと言っていいほど新規立ち上げ時はこのエラーが出ます。
(この画面は初めて見ましたがエラーの内容は同じです。)
これは、「logの書き込み権限がない」というエラーです。

なのでlogの書き込み権限を付与しましょう!
プロジェクトの中までcdで移動してから以下のコマンド実行!
“`diff_php
$ sudo chmod 777 storage
“`

※sudoをつけないと権限の変更

元記事を表示

シニアPHPエンジニアの資質

PHP開発者として、「シニアPHPエンジニア」というタイトルは非常に魅力的です。もしあなたがPHPを本当に楽しんでいるなら、これからシニアPHPエンジニアが持つべき資質をいくつか挙げて、ジュニアやミッドレベルのPHPエンジニアの助けになればと思います。

![画像説明](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kx83z5vr79tnteg3kq3s.png)

### 落ち着いたマインドセット
すべてのプログラマーにとって、良いコードを書くためにはしっかりとしたマインドセットが必要です。

忍耐強く、簡単に諦めないようにしましょう。

開発プロセスの中で、特にジュニアやミッドレベルの開発者は、コードやアーキテクチャに関するさまざまな問題に直面します。些細な問題もあれば、まったく新しい問題もあります。一つ一つの根本原因を冷静にトラブルシューティングすることが重要です。急いで取り組むのはプロジェクトに対して無責任です。焦りは妥協や挑戦の回避につながります。私自身、北京での2年間のシンプルな生活が、冷静なマインドセッ

元記事を表示

OTHERカテゴリの最新記事