PHP関連のことを調べてみた2023年01月09日

PHP関連のことを調べてみた2023年01月09日
目次

業務に使いそうなPHP8

豚野郎です。(ヌルッ!)

PHP8の変更点について書いていきます。
この記事は個人的にLaravelで、
小〜中規模開発で使う前提で何となく必要そうな変更点を書いていきます。

また、自分が理解できるまでの範囲のものを記載しました。

**ここでは以下2点に関しては記載しません。**
・JITコンパイラー
・新しい定義済みの関数

あくまで、**個人的に業務、且つLaravelで使いそうだと思う構文の変更点**について書いていきます。

**PHP 8.1.14**

# 1. コンストラクタのプロパティ昇格機能
まずPHPの公式にもタイトルと同じことが書かれていませんでしたが、
**私はタイトルの意味がよくわかっていませんでした。**
そこで、PHPのプロパティについて調べました。

https://wepicks.net/phpref-oop-property/#:~:text=%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3%20%E3%81%AF%20%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82

元記事を表示

Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: shivammathur/setup-php

警告がでるためメモ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/cfbaab0d-ca23-d2bb-85eb-0cbb3b851cd3.png)
Node.js 12 actions are deprecated. For more information see: https://github.blog/changelog/2022-09-22-github-actions-all-actions-will-begin-running-on-node16-instead-of-node12/. Please update the following actions to use Node.js 16: shivammathur/setup-php@15c43e89cdef867065b0213be354c2841860869e

# 教えてSenpai
`shivammathur/setup-php@v2`を使うとよいです
“`yaml:laravel.yml
jo

元記事を表示

【Laravel】URL情報から値を取得する方法(クエリ文字列)

## はじめに
URL情報を使ってコントローラ側に値を渡す方法について説明します。
今回は、クエリ文字列を使用して実現していきます。
使用するLaravelのバージョンは、`9.43.0`です。

## クエリ文字列とは
クエリ文字列とは、URLの後ろに「?◯◯=✕✕」といった形式で書かれた文字列のことです。
これを使ってコントローラに値を渡すことができます。(GET送信)

## コードを書いてみる
クエリ文字列を使って、URL情報から値を取り出して画面表示させるコードを書いてみます。

下記URLを使って名前と年齢が表示されることを確認してみます。
期待する表示は、名前が「テスト太郎」、年齢が「24」と表示されることです。
クエリ文字列をURLに設定する方法は、URL末尾に`?`をつけて`項目名=値`です。
複数の値を設定する場合は、`&`を使ってつなげていきます。

例) http://127.0.0.1:8000/test?name=テスト太郎&name=24

### viewファイル
`{{ $name }}`と`{{ $age }}`が値を表示させる部分になります。

元記事を表示

Code coverage driver not available.

coverageするとエラーがでるのでメモ

“`bash
php artisan test –coverage

ERROR Code coverage driver not available.
“`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/fc662b22-b687-2d38-1ff3-fd7ff176377c.png)

# 教えてSenpai

Xdebugをインストールでなおりました。 https://xdebug.org/wizard に`phpinfo();`か`php -i`を貼り付けてインストールしましょう

“`bash
sudo apt install -y php-dev autoconf automake \
&& wget https://xdebug.org/files/xdebug-3.2.0.tgz \
&& tar xf xdebug-3.2.0.tgz \
&& cd xdebug-3.2.0 \

元記事を表示

【Laravel】BLOCSで本管理アプリを作ってみた – 本の一覧表示

# BLOCSでアプリを作る
BLOCSはLaravelで使えるテンプレートエンジンです。BLOCSを使って、簡単な本管理アプリを作ってみたので、ポイントを紹介します。本管理アプリでは、以下の3つの機能を作りました。当記事では、本の一覧表示を開発します。新規登録と編集機能は、[こちら](https://qiita.com/hyada/items/11597f88102ed1c45407)をご参照ください。

1. 本の新規登録
2. 本の編集
3. 本の一覧表示

![スクリーンショット 2023-01-08 1.12.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962814/ef29c212-a009-be83-4c46-e450d56c4d68.png)

当記事では、Bladeでの開発との違いにポイントを絞って説明します。開発したLaravelアプリのソースは[GitHub](https://github.com/blocs/example_books)で公開していますので、全体のソース

元記事を表示

Your lock file does not contain a compatible set of packages. Please run composer update.

GitHub Actionsでエラーが出たためメモ

“`bash
Annotations
2 errors and 1 warning
laravel-tests
Your lock file does not contain a compatible set of packages. Please run composer update.

Problem 1
– ramsey/collection is locked to version 2.0.0 and an update of this package was not requested.
– ramsey/collection 2.0.0 requires php ^8.1 -> your php version (8.0.26) does not satisfy that requirement.
Problem 2
– symfony/console is locked to version v6.2.3 and an update of this package was not r

元記事を表示

【Laravel】BLOCSで本管理アプリを作ってみた – 本の新規登録と編集

# BLOCSでアプリを作る
BLOCSはLaravelで使えるテンプレートエンジンです。BLOCSを使って、簡単な本管理アプリを作ってみたので、ポイントを紹介します。本管理アプリでは、以下の3つの機能を作りました。当記事では、新規登録と編集機能を開発します。

1. 本の新規登録
2. 本の編集
3. 本の一覧表示

![スクリーンショット 2023-01-08 1.12.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2962814/ef29c212-a009-be83-4c46-e450d56c4d68.png)

当記事では、Bladeでの開発との違いにポイントを絞って説明します。開発したLaravelアプリのソースは[GitHub](https://github.com/blocs/example_books)で公開していますので、全体のソースは[こちら](https://github.com/blocs/example_books)をご参照ください。

https://github.co

元記事を表示

laravel ‘timezone’ => ‘Asia/Tokyo’,【config/app.php】

`config/app.php`に`’timezone’ => ‘Asia/Tokyo’,`と記載すると
`php artisan make:migration create_ramens_table`したときのファイル名がJSTになるのでオススメ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/b039f454-e959-202a-463e-5d05e758137f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435735/fa1677c0-699d-9869-eb7b-d19f5d2ee7b7.png)

元記事を表示

ラズパイにWordPressを構築するためのPHPモジュールを導入する

# 機能要件
WordPress構築に必要な機能要件は、以下のページに記載されている。

Server Environment

| 必須モジュール | 初期導入済 | 内容 |
|:-:|:-:|:-|
| json | ○ | 他のサーバーとの通信やJSON形式のデータの処理に使用。PHP8.0以上なら標準でインストール済み。 |
| mysqli | ○ | MySQLやMariaDBとのデータ連携に必要。 |

| 必要モジュール | 初期導入済 | 内容 |
|:-:|:-:|:-|
| curl | | httpリクエストを扱うためのモジュール。 |
| dom | | DOM操作を可能にするためのモジュール。 |
| exif | ○ | 画像に保存されているメタデータを操作する。これを利用するためには関連モジュールであるmbstringのインストールも必要。 |
| fileinfo | ○ | ファイルのMIMEタイプ検知に使う。 |
| hash | ○ | パスワードや更新

元記事を表示

PHPをかじった自分がjsの非同期処理を理解してみる

# 概要

– PHPで同期処理しか書いてこなかったので非同期処理がワケワカメだった。そんな自分がなんとかして非同期処理を理解してみたのでまとめてみる。

# ベースとなるコード

– 今回、下記の様なjsのコードを用意しました。

“`js
console.log(“——————–“);

function a() {
console.log(“関数aです”);
b();
}

function b() {
console.log(“関数bです”);
c();
}

function c() {
console.log(“関数cです”);
}

a();
“`

– 関数aが関数bを呼び、関数bが関数cを呼んでいます。
– 上記を実行すると下記のようにコンソールに出力されます。

“`
——————–
関数aです
関数bで

元記事を表示

ComposerのPharパッケージという選択肢

みなさんはPHPで書かれたツール類などを、どうやってインストールしているでしょうか。

まあComposerを使うのが基本ではあるのですが、 [Phive](https://phar.io/)みたいなツールもあったり、Composerを使うとしても `composer global require` を使うとか、`composer require –dev`を使うとか、[Composer bin plugin](https://github.com/bamarni/composer-bin-plugin)を使うとかの方法がありますよね。

PHPStan開発者のOndřejはこのように言っています。

PHPStanのインストール方法の選択肢については別に記事を書いています。

https://zenn.dev/tadsan/articles/00bf49f8ec2f16

PHPStanについては上の記事にも書きましたが、`composer require –

元記事を表示

ラズパイにPHP8.2を導入した

# PHP8.2は簡単には入れられない
標準リポジトリを探してもPHP8.2は見つからない。
なんなら8.1もない。8.0はあるけど面白くない。
“`
# apt search php8.2
ソート中… 完了
全文検索… 完了
“`

# 前提パッケージを導入
PHPをインストールするためには色々と前提パッケージを入れる必要がある。

## build-essential
gccやmakeなど、開発に必要なビルドツールをまとめてインストールできる。
もしかしたら最初から入ってるかもしれない。
“`
# apt -y install build-essential
“`

## apt-transport-https
aptでhttp通信ができるようにするパッケージ。デフォルトだとhttp通信ができないようである。最新のaptだと対応しているらしいので要らないかもしれないらしい。
“`
# apt -y install apt-transport-https
“`

## ca-certificates
https通信するためのCA証明書。これがないとhttps通

元記事を表示

PHPerが学ぶPython③ 例外処理

おいっす。豚野郎です。
Pythonの変数・配列・クラスの説明は書いてきたので、
最後に例外処理の記事を書けば言語としての基礎は全て書いたことになるのかなと思います。

そのため今回は、基礎としては最後として「例外処理」について書いていきます。

※ 注意:内容はPHPか何かの言語を書いたことがある方向けなので、
説明を割愛している箇所は多々ありますので、ご了承ください。

**バージョン:3.9.1**

【過去の記事】
■ PHPerが学ぶPython① 変数・配列・タプル

https://qiita.com/pig_buhi555/items/301f7c8eabd1a5fd121f

■ PHPerが学ぶPython② クラス

https://qiita.com/pig_buhi555/items/ab6108d6fc03ccfffbe4

# 1. 実行時の例外
以下が発行する例外の種類です。
①. NameError:変数定義されていない時
②. ZeroDivisionError:0で割り算を行った時
③. TypeE

元記事を表示

Laravel9でcreate projectしてからコードを描き始めるまでの自分的ルーティン

# この記事は?

表題の通りですが、最近Laravel触っていないので、急に触るときに「あれこれどうやってセットアップしてたっけ?」が増えてきたので、まとめておきます。

# 環境

– OS
– macOS Monterey 12.6.2
– PHP
– 8.0.x
– Laravel
– 9.46.0
– IDE
– PhpStorm 2022.3.1

さくらのサーバがかたくなにPHP8.1に対応してくれないので、今回は8.0をターゲットに書きます。

# 各種セットアップ

## PHPのインストール

自分はanyenv経由でphpenvを入れ、homebrewでインストールしたPHPの各種バージョンをphpenvのディレクトリにシンボリックリンクして使っています。簡単にやり方をまとめます。

## anyenv, phpenvのインストール

まとまっているサイトが沢山あるので省略。

https://qiita.com/hamakou108/items/4744818dd166191c3e6b

このQiita記事にも書かれていますが、ビ

元記事を表示

falseからの配列自動生成が非推奨になっていたのでsqliteで困った

お絵描き掲示板[noReita](https://github.com/sakots/noReita)をつくっています、さこつです。

今回表題の件で困ったことが解決したので記事にしようと思います。

## 何が起きたのか

実はPHP8.1で起きてたらしいんですけど、([falseから配列の自動生成が非推奨になりました。](https://qiita.com/rana_kualu/items/e350b8ff80f929626eb9#automatic-conversion-of-false-into-an-empty-array-on-write-operands-is-deprecated))

自分はsqlでこういうことをしていました。

“`index.php
//最新コメント取得
$sqlw = “SELECT * FROM tlog WHERE thread=0 ORDER BY tid DESC LIMIT 1”;
$msgw = $db->prepare($sqlw);
$msgw->execute();
$msgwc = $msgw->fetch();
“`

元記事を表示

Laravel で複数削除 where (whereIn)+ delete vs destroy はどちらが早いのかを検証してみた。

# はじめに

Laravel を使っていて、複数レコードを削除する方法が2つありましたので、
どちらが処理速度早いのかを検証してみました。

携わっていた案件で、ユーザーが選択したものを一括削除する機能があったことがきっかけです。

まあ、該当するidがフロントから送られてきたら、そのidをもとに削除すればいいだけだから、
複雑じゃないし気楽にやるか〜と思っていたところ、
モデルを複数削除する方法って複数あるんやな〜と見つけました。

それでどの処理が良いんだろうかと調査することにしました。



# Laravel のEloquent 削除処理について

まずは、基本的な削除について改めて確認をします。
なお、検証で使用するlaravel のバージョンは8となっております。

以下例などは、公式docs : laravel Eloquent の準備 から抜粋
https://readouble.com/laravel/8.x/ja/eloquent.html

基本的

元記事を表示

条件演算子(PHP)

条件演算子のサンプルプログラムです。
全体プログラムです

“`HTML






関数テスト(引数とデフォルト)



=0ならそのまま、

元記事を表示

wordpressのCSS、JSのキャッシュクリアのオススメ

CSS、JSのキャッシュをクリアする方法は色々あります。CSSを更新したタイミングでのみ、キャッシュクリアする記述方法を見つけたのでメモします。

先にコードから
~~~ php
function theme_enqueue_styles() {
wp_enqueue_style( ‘style’, get_stylesheet_directory_uri() . ‘/style/style.min.css’, array(), date(“ymdHis”, filemtime( get_stylesheet_directory().’/style.css’)) );
}
add_action( ‘wp_enqueue_scripts’, ‘theme_enqueue_styles’ );
~~~
仕組みは`wp_enqueue_style`関数の第4引数でバージョンを変化させます。対象のファイルの更新日を取得しているのでCSSのファイルを変えたタイミングで更新されるようになっています。
なので、そのページを再読み込みをしてもちゃんとキャッシュが残りますし、あとで、変更などもす

元記事を表示

【初心者向け】Wordpressテーマを自作する[singular.php][single.php][page.php]

ここでは、WPのテーマを作る上で必須の`singular.php`のコードを交えた解説を行います。
「あれ?`single.php`じゃないの?」と思った方、なぜ`single.php` ではなく`singular.php`なのかも含めて解説します。
とりあえずこの段階では「同じもの」と思っていただいて良いです。

:::note info
ファイルの構造や解説等、Wordpress(以下、WP)のテーマを自作する際の基本的な部分は、こちらの記事で紹介しています。
+ [【初心者向け】Wordpressテーマを自作する際に分かってると良いかもしれない事](
https://qiita.com/makkie/items/dc764c2845492079c0af)
+ `index.php`のコードを知りたいよって方はこちら
[【初心者向け】Wordpressテーマを自作する[index.php]](https://qiita.com/makkie/items/b5231a9f63b076c70af8)
+ `header.php`のコードを知りたいよって方はこちら
[【初心者向け】Wor

元記事を表示

PHP7.3 Failed opening required ‘srv/vendor/google/cloud-error-reporting/src/prepend.php’

# GCPでエラーレポーティングを設定する際にprepend.phpがうまく読み込めずハマったので記事にしておきます。

php.iniに正しいパスを指定しても`Failed opening required ‘srv/vendor/google/cloud-error-reporting/src/prepend.php’`のようにファイル読み込みエラーが出てしまう場合には、参考になると思います。

App Engineのインスタンスでエラーが発生した場合にGCP Error Reportingにエラー内容を出力することができ、
その手順については[PHP 用 Error Reporting の設定](https://cloud.google.com/error-reporting/docs/setup/php)に以下の説明があります。

>エラーの報告
>次のコマンドを使用して、クラウド ライブラリをインストールします。
>“`
>$ composer require google/cloud-error-reporting
>“`
>次の行を php.ini に追加します。こ

元記事を表示

OTHERカテゴリの最新記事