- 1. 【Laravel】BLOCSで本管理アプリを作ってみた – 一覧表示
- 2. Your lock file does not contain a compatible set of packages. Please run composer update.
- 3. 【Laravel】BLOCSで本管理アプリを作ってみた – 新規登録と編集
- 4. laravel ‘timezone’ => ‘Asia/Tokyo’,【config/app.php】
- 5. ラズパイにWordPressを構築するためのPHPモジュールを導入する
- 6. PHPをかじった自分がjsの非同期処理を理解してみる
- 7. ComposerのPharパッケージという選択肢
- 8. ラズパイにPHP8.2を導入した
- 9. PHPerが学ぶPython③ 例外処理
- 10. Laravel9でcreate projectしてからコードを描き始めるまでの自分的ルーティン
- 11. falseからの配列自動生成が非推奨になっていたのでsqliteで困った
- 12. Laravel で複数削除 where (whereIn)+ delete vs destroy はどちらが早いのかを検証してみた。
- 13. 条件演算子(PHP)
- 14. wordpressのCSS、JSのキャッシュクリアのオススメ
- 15. 【初心者向け】Wordpressテーマを自作する[singular.php][single.php][page.php]
- 16. PHP7.3 Failed opening required ‘srv/vendor/google/cloud-error-reporting/src/prepend.php’
- 17. PHPのバージョンを切り替える
- 18. 【Laravel】フォームの日付入力のデフォルト値を今日にする
- 19. No application encryption key has been specified.
- 20. PHPStormの便利機能
【Laravel】BLOCSで本管理アプリを作ってみた – 一覧表示
# BLOCSでアプリを作る
BLOCSはLaravelで使えるテンプレートエンジンです。BLOCSを使って、簡単な本管理アプリを作ってみたので、ポイントを紹介します。本管理アプリでは、以下の3つの機能を作りました。当記事では、本の一覧表示を開発します。新規登録と編集機能は、[こちら](https://qiita.com/hyada/items/11597f88102ed1c45407)をご参照ください。1. 本の新規登録
2. 本の編集
3. 本の一覧表示当記事では、Bladeでの開発との違いにポイントを絞って説明します。開発したLaravelアプリのソースは[GitHub](https://github.com/blocs/example_books)で公開していますので、全体のソースは[こちら](https://github.com/blocs/example_books)をご参照ください。
![スクリーンショット 2023-01-08 1.12.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.
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. 本の一覧表示当記事では、Bladeでの開発との違いにポイントを絞って説明します。開発したLaravelアプリのソースは[GitHub](https://github.com/blocs/example_books)で公開していますので、全体のソースは[こちら](https://github.com/blocs/example_books)をご参照ください。
![スクリーンショット 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)
# ルーティング
まず、ルーティン
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構築に必要な機能要件は、以下のページに記載されている。| 必須モジュール | 初期導入済 | 内容 |
|:-:|:-:|:-|
| 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はこのように言っています。
How to install and run PHPStan?
* composer-bin-plugin ❌
* Phive ❌
* jakzal/phpqa ❌Each of these methods has downsides.
Simply run composer require –dev phpstan/phpstan ✅ in your project and get on with your day.
— Ondřej Mirtes (@OndrejMirtes) June 28, 2022
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 のバージョンは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 に追加します。こ
PHPのバージョンを切り替える
# remi リポジトリを追加する
“`bash:bash
yum install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
“`# PHP 5.6 7.2 7.3 をインストールしてみる
“`bash:bash
for v in 56 72 73 ; do yum -y install php$v php$v-php-{gd,xml,mbstring,mysqlnd,opcache,pecl-apcu,common,fpm,embedded,pear} ; done
“`# 本体の場所の確認
“`bash:bash
$ ls -l /opt/remi/
total 0
dr-xr-xr-x. 3 root root 32 Feb 15 12:17 php56
dr-xr-xr-x. 3 root root 32 Feb 15 12:18 php72
dr-xr-xr-x. 3 root root 32 Feb 15 12:18 php73
“`:::note
本体のシンボリック
【Laravel】フォームの日付入力のデフォルト値を今日にする
## フォームの日付入力のデフォルト値を今日にする
ユーザーに入力をしてもらうフォームを作る際、日付を手入力で入れてもらうのですが、
意外と面倒だったりするなと思い、デフォルト値を設定することとしました。今日のトレーニングメニューだったり今日の体重を入力することが主なので、
ある程度固定で今日をデフォルト値としていいというフォームを作る前提です。### 考え方
inputタグの中にあるvalueに今日の日付を入れてあげればOK
“`
“`
ただこれだと固定で12月22日になってしまうので、
phpを使って書いていきます。### 実際のコード
“`
No application encryption key has been specified.`php artisan key:generate`でキーを作りましょう
“`bash
APP_KEY=$(php artisan key:generate –show) php artisan test
“`
PHPStormの便利機能
PHPStormでよく使う設定・ショートカットキーをまとめました。
# 目次
[1. Xdebug](#xdebug)
[2. DBクライアント](#dbクライアント)
[3. Git](#git)
[4. ショートカットキー](#ショートカットキー)
[参考](#参考)# 1.Xdebug
設定することで、ステップ実行ができるようになります。
デバッグ時に役立ちます。## 準備
今回はDocker環境でXdebugを有効にする手順を記しています。
開発環境によって設定の方法が異なります( [参考1](https://www.jetbrains.com/help/phpstorm/configuring-xdebug.html#integrationWithProduct) )### ①インストール
まずはXdebugをインストールするために、Dockerfileに以下を記述“`dockerfile
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
“`※以下のようなエラーが出