- 1. [静的解析 x PHP]気軽に静的解析をするために”phpstan”と”phan”をDockerで実行する手順をまとめる
- 2. PHPの構文省略形まとめ
- 3. Laravelの個人的プラクティス
- 4. PHP Docker環境でMysql DBに接続する際の注意点
- 5. 【PHP】PHPUnitの環境構築(インストール→オートロードの設定→テスト実行まで)
- 6. Qiitaの記事投稿画面みたいなリアルタイムで編集状況わかるやつを作ってみる(第一回)
- 7. Laravel 認可について
- 8. LaravelとmicroCMSでのコンテンツ管理 応用編
- 9. ポケモンのクラスを作ってPHPオブジェクト指向の3大要素を理解する
- 10. AWS: 簡単なLAMPサーバーでWordPressを動かすまで(Intel Mac) 〜PHPをインストール〜
- 11. Docker環境でPHPでGDライブラリを有効にする方法
- 12. ubuntuにcomposerをインストール
- 13. はじめてORM(Eloquent, Doctrine)を使うことになったPHPerのための手引き
- 14. LaravelでHttpRequestを扱う際の個人的ベストプラクティス
- 15. PHP MAMPで環境構築
- 16. 最小限のSSR付きSPAフレームワークを作ってみた
- 17. テンプレート(smarty, mustache)をPHPファイルに適用する
- 18. Bit演算子について
- 19. laravel テストアサーション 論理削除されているか確認する(要点のみ)
- 20. laravel ルートnameを使ってパスを取得する方法
[静的解析 x PHP]気軽に静的解析をするために”phpstan”と”phan”をDockerで実行する手順をまとめる
# phpstan
https://github.com/phpstan/phpstan
#### 実行コマンド
“` .sh
docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse {解析対象のディレクトリ}
# (例)docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse backend/packages# ターミナル上でなく、テキストファイルに出力したい場合
docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse {解析対象のディレクトリ} > phpstan.txt
“`##### ▼動作確認
以下を実行してバージョンが表示されれば実行可能な状態“` .sh
docker run -v `pwd`:/app -w /app ghcr.io/phpstan/phpstan analyse -V
> PHPStan – PHP Stati
PHPの構文省略形まとめ
うっすっす。豚野郎です
今回はPHPの省略構文形を書いていこうと思います。
前から知ってはいるんですけど、たまに読んでて「ん?」ってなったりすることがあるので
ここでまとめておこうと思います。・バージョン:PHP 7.4.29
## 1. echo
普通のechoの書き方は以下の様な形です。
“`echo.php
“`結果
“`
テストです。
“`省略構文形を使うと以下のようにも書けます。
“`echo.php
='テストです。'?>
“`結果
“`
テストです。
“`公式でも省略が推奨されているみたいですね。
## 2. if文
①. コロンを使う方法
“`if.php
“`結果
“`
test
“`htmlに埋め込む時は以下の様な書き方もできます。
“`if.php
Laravelの個人的プラクティス
## 最初に
数ヶ月Laravelを使った開発を行ってきました。
その中で、今後実装する上で気をつけたい点が溜まってきたので、備忘録として残しておきます。
※ 用途はReactのバックエンドのAPIサーバーで、[Bladeテンプレート](https://readouble.com/laravel/8.x/ja/blade.html)は使っておりません。ここに記載されてあるポイントはこちらのボイラープレートに反映されています。
https://github.com/PaykeDeveloper/payke-hinagata-backend
## サービスコンテナを使用する
サービスコンテナとは、以下の事を指します。https://readouble.com/laravel/9.x/ja/container.html
コントローラーにロジックが乗ったり、モデルにそぐわないメソッドが実装されるのを防ぐ為に
最初からこういったレイヤーを導入すべきでした。このサービスコンテナを導入する事で、他のメリットも享受できます。
サービスコンテナはDI(Depedency Inject
PHP Docker環境でMysql DBに接続する際の注意点
## はじめに
Dockerについての解説はしない
DockerでPHP環境が構築できているのが前提## PHPからDBに接続
適当なファイルを作成する
内容を記述“`php
getMessage() . “\n”;
exit();
}
“`## 注意点
*DB_HOSTの*`mysql:host=mysql`はコンテナ名を指定している
厳密にいうとコンテナのipアド
【PHP】PHPUnitの環境構築(インストール→オートロードの設定→テスト実行まで)
最近仕事にゆとりができたので、TDD(テスト駆動開発)の勉強として、PHPUnitを使って試そうとしたところ、見事にハマったので備忘録として記載する。
# 0.環境
MacOS 11.5.2(Big Sur)
php 8.1.2
XAMPP
Composer 2.3.7
※ComposerとはPHPのパッケージ管理システムである。
参考:[composerとは](https://qiita.com/atwata/items/d6f1cf95ce96ebe58010)# 1.ComposerでPHPUnitをインストール
まず、/Applications/XAMPP/xamppfiles/htdocs直下に、TDD用の”phpunit”ディレクトリを作成。
phpunitディレクトリ直下にcomposer.json作成。下記のプログラムを記述し、ターミナルで“`composer update“`を実行。インストール後、“`composer.lock“`と“`vendor“`フォルダが追加されている。
“`json:composer.json
{
“requir
Qiitaの記事投稿画面みたいなリアルタイムで編集状況わかるやつを作ってみる(第一回)
# 目的
友達が記事投稿のサイト作りたいらしくて、折角ならQiita真似してやろうと思って、今回少しやってみました!# 投稿画面
Qiitaの投稿画面をディベロッパーページで確認してみると…
“`html
“`
で、textinputを使わない方法を使ってることがわかります…そんなん出来んのかよ…
これを真似し始めたことが全ての始まりでした…
# type=roleでcontenteditable=”true”のdiv
こいつを使って何がいい
Laravel 認可について
# はじめに
Laravelで認可について学習しましたので そのアプトプットです。# 認可って?
公式(https://readouble.com/laravel/9.x/ja/authorization.html)
> あるユーザーが認証されていても、アプリケーションが管理している特定のEloquentモデルまたはデータベースレコードを更新や削除する権限を持っていない場合があるでしょう。Laravelの認可機能は、こうしたタイプの認可チェックを管理するための簡単で組織化された方法を提供します。
>CRUD処理で自分が投稿・編集・削除など基本的に自由に操作できますが、他人が自分の投稿を勝手に削除されたりするとまずい。防ぐための方法として「ゲート」と「ポリシー」の2つが存在し、アプリケーションを構築する時は両方混在する事もあるそう。とりあえず今回はポリシーに絞ってアウトプットしていきたいと思います。
### ゲート
ダッシュボードの表示など、モデルやリソースに関連しないアクションに適しています。
### ポリシー
特定のモデルやリソースアクションを認可する場合に適してLaravelとmicroCMSでのコンテンツ管理 応用編
PHPフレームワークであるLaravelと、ヘッドレスCMSであるmicroCMSで、コンテンツ管理機能を実装する手法をご紹介します。Laravelの実装とmicroCMSのコンテンツ管理2つに関してハンズオン形式で記述していきます。
## 前回の記事はこちら
https://qiita.com/masakichi_eng/items/6ceda3b4d7f82ec22aa5
この記事では、応用編として記事詳細ページの表示と、記事にタグを設定する方法について解説していきます。
## 記事詳細ページの実装
### ルーティングの追加
“`php:routes/web.php
Route::get(‘/articles/{id}’, [ArticleController::class, ‘show’])->name(‘articles.show’);
“`### microCMSのサービスクラスに追記
“`php:app/Services/MicroCmsService.php
public function getSingleContent(stringポケモンのクラスを作ってPHPオブジェクト指向の3大要素を理解する
## はじめに
こんにちは。masakichiです。PHPのオブジェクト指向には3大要素というものがあります。
「カプセル化」「継承」「ポリモーフィズム」の3つだそうです。知らない人からすると、なんのこっちゃだと思います。
これらを理解するには、PHPのクラスから学んでいくといいと考えています。ということで、まずはPHPのクラスについて理解するために、ポケモンを通して実装例を書いていこうと思います。
ポケモンには様々な種類がいます。
一番最初は151匹だったのに、いまでは900種類以上いるそうです。とても覚えられたものじゃありません。
さて、いきなりですが、ここであなたはポケモンの開発者になったとします。
900種類以上のポケモンを表現するために、プログラミングコードを記述しなくてはいけません。
そんな時、1匹ずつ別々のプログラミングコードを記述することで実現は可能かもしれません。しかし、そのやり方だと、もしまた新しいポケモンが発売された時、同じように新種のポケモンの数だけコードを書き足さなくてはいけなくなります。
そんな時に役立つのがクラスという考え方です
AWS: 簡単なLAMPサーバーでWordPressを動かすまで(Intel Mac) 〜PHPをインストール〜
# はじめに
AWSハンズオンの学習記録です。
2022年8月の情報をもとに投稿します。ゴールは、EC2を使って簡易的な仮想サーバーを作り、ブログソフトであるWordPressをインストールします。
また、WordPressを外部公開できることを想定しています。**今回はプログラミング言語である「PHP」のインストール方法を投稿します。**
尚、ハンズオンがメインのため、各サービスの概要や用語の解説は極力省かせていただきます。
### ゴール
仮想サーバーでWordPressを使える状態にします### ゴールまでの流れ
[1.VPCとサブネットを作成](https://qiita.com/holySh10/items/749b98e320fc71e6739e)
[2.EC2を作成/セキュリティグループの設定](https://qiita.com/holySh10/items/90a3501d819f1ae2c7cd)
[3.EC2へSSH接続](https://qiita.com/holySh10/items/689f4c83cd18db128983)
[4.WebサーDocker環境でPHPでGDライブラリを有効にする方法
# ハマったこと
php:8.0-apache-bullseye環境で開発中、GDに依存しているライブラリをcomposer requireした際、Dockerの立ち上げ時に以下のエラーが出るようになった
“`
#0 0.140 + composer update
#0 0.216 Loading composer repositories with package information
#0 1.609 Info from https://repo.packagist.org: #StandWithUkraine
#0 6.428 Updating dependencies
#0 7.318 Your requirements could not be resolved to an installable set of packages.
#0 7.318
#0 7.318 Problem 1
#0 7.318 – maatwebsite/excel[3.1.28, …, 3.1.30] require phpoffice/phpspreadsheet 1.ubuntuにcomposerをインストール
参考
https://mebee.info/2020/06/02/post-10844/“`
sudo apt install -y php libapache2-mod-php php-gd php-xml php-cli php-mbstring php-soap php-xmlrpc php-zip
“`“`
curl -sS https://getcomposer.org/installer | php
“`“`
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
source ~/.bashrc
“`
確認
“`
composer -v
“`はじめてORM(Eloquent, Doctrine)を使うことになったPHPerのための手引き
## はじめに
この記事ではORM(=Object Relational Mapper)を使うメリットやORMとはみたいな小難しい話はしません。フラットなPHPを書いていたPHPerがORMを使う世界に初めて来た場合、そもそもORMの1レコード=1オブジェクトという世界観に対してなかなかイメージがつかめないことがあるのを観測したので、そこのイメージギャップを埋められればと思って書いてみました。
そもそもクラス?オブジェクト?インスタンス?プロパティ?メソッド?みたいな用語面で躓いている場合は https://www.php.net/manual/ja/language.oop5.php 辺りを別タブで開いて行ったり来たりしながら読んでもらうと良いかもしれません。
## データの読み取り
### 従来の考え方
![データベース](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23963/bccd50a9-8992-3d9f-baee-98c7af738ca0.png)
上の図のようなデータベースの表
LaravelでHttpRequestを扱う際の個人的ベストプラクティス
[最終的な成果物](#最終成果物)
# 基本的な考え方と、問題点
LarvelにてRequestを扱う際、少しググった場合も、書籍等の場合も大体FormRequestを継承すると便利だよー。
といった旨の解説とともに、Sampleでコードを載せてくれています。
そのSampleはとてもSimpleで確かにこれは簡単だ!と思わせてくれる内容であるので大抵はそのSampleに習い実装をしていくことかと思います。しかし、時と場合によっては複雑なHttpRequestを扱わなければいけなかったり、とても大量のパラメータを扱わなければいけなかったりします。
そのような状態に陥ったときに、FormRequestを継承して使う。
だけでは少々苦しい場面に遭遇することがあります。
苦しいとはいっても– RequestクラスがFatになる
– バリデーションの記述が少し難解になるくらいではあるのですが。
また、これはそもそもですがLaravelのFormRequestは– どのようなパラメータを受け付けるかについての見通しがよくない
とも思ってます。
そのうえ
PHP MAMPで環境構築
PHPの環境構築をMAMPで行います。
環境{
Mac
MAMP
VScode
}備忘録
## MAMPとは
Webアプリの開発に必要な環境をまとめたソフトウェア。
MAMPをインストールするだけでPHPの実行環境が整う。従来、Mac向けに開発されたソフトウェアであり、Macユーザー向け。
(現在はWindows版も提供あり)Macintosh(マッキントッシュ):従来、Mac向けに開発されたため
Apache(アパッチ):Webサーバー
MySQL(マイエスキューエル):データベース
PHP:PHPで書かれたプログラムを実行するソフトウェア## インストール
まず、公式からインストールします。
[MAMP公式](https://www.mamp.info/en/mac/)“`terminal
1,Free Download をクリック2、intel か M1(2) のいずれかを選択しダウンロードを開始
3、ダウンロード終了したら、インストーラーを実行し、ホップアップで「続ける」を選択
4、更に警告ホップアップ。移動したり名前を変更したりするな。とのこと
最小限のSSR付きSPAフレームワークを作ってみた
# 概要
PHPのテンプレートライブラリでいろいろ考えていた時にふとこうすればSSRっぽいことができるんじゃないかと思ったので試しに作ってみた記録。
どうせ需要なんてないのはわかりきってるので適当。https://github.com/uniras/microssr
# PHPコードとテンプレートの両立
別記事で書きましたが、意外と簡単に1ファイルでPHPコードとテンプレートの両立が出来たので、これもっとPHP側でごにょごにょすればSSRっぽくなるんじゃね?って気づきました。
# Mustacheの採用
テンプレートエンジンはMustacheを採用した、なぜかというと探した限り公式でPHPにもJavaScriptにも対応したテンプレートエンジンはこれくらいだった。
また、PHPも(composerとかで)インストールしなくてもファイルをフォルダごとアップロードするだけで使えるようになるのも決め手になった。# サーバーサイド部分
こんな感じのコンテンツファイルを作る。
“`php
テンプレート(smarty, mustache)をPHPファイルに適用する
# 概要
PHPファイル自身をsmartyやmustache等のテンプレートエンジンのテンプレートとして適用できるのかという思考実験をしてみたら簡単にできたので公開してみる。
# 何がうれしいの?
テンプレートエンジンを実行してテンプレートを展開するコードをテンプレートに埋め込めれば、
PHPファイル1つ(テンプレートエンジン本体のソースコードを除く)でテンプレートの実行結果が確認できてテンプレートの製作がはかどりそうと思った。# やり方
PHPファイル本体は`file_get_contents(__FILE__)`で取得できるので、PHP部分` ~ ?>`を正規表現で取り除いてからテンプレートエンジンに渡すだけ。
# なぜsmartyとmustache?
どちらも最悪ZIP解凍したファイル群をフォルダごとアップロードするだけでテンプレートエンジンの実行ができるから。
だいたいのテンプレートエンジンはそうなのかもしれないけど。要はたまたま目についただけ。
一応mustacheは他の言語というかJavaScriptにも公式対応しているので夢が広がりそうと思った部分もあBit演算子について
うす、豚野郎です。
最近、このQiitaの存在を会社の人にバラしたら
「おっす!豚野郎です!」といじられました。さて、今回はBit演算子について書いていこうと思います。
プログラムでも2進数が使えることを初めて知りました。公式ドキュメントに沿って書いていこうと思います。
https://www.php.net/manual/ja/language.operators.bitwise.php・バージョン:PHP 7.4.29
順番的に以下の順番で書いていきます。
1.ビット積
2.ビット和
3.排他的論理和
4.否定
5.左シフト
6.右シフト## 1. ビット積
> $a および $b の両方にセットされているビットがセットされますここでは3と5を例に書いていきます。
10は二進数だと1010、15は二進数だと1111です。この場合、ビット積は1010になるので、結果は10になるはずなので検証します。
“`bit.php
“`結果
“`
1laravel テストアサーション 論理削除されているか確認する(要点のみ)
# 概要
– DB系テストアサーションで論理削除されていることを確認するアサーションとその使い方を要点のみまとめる。
# 方法1 – モデルを使う
– `assertSoftDeleted()`の引数に論理削除されたことを期待するモデルを渡すことでチェック可能である。
“`php
$this->assertSoftDeleted($fooModel);
“`# 方法2 – テーブル名と一意の値を使う
– `assertSoftDeleted()`の引数にテーブル名とレコード絞り込みデータを渡すことでチェック可能である。
“`php
$this->assertSoftDeleted(
table: ‘テーブル名’,
data: [
‘id’ => 1,
],
);
“`# 参考文献
– [https://readouble.com/laravel/9.x/ja/database-testing.html#assert-delete
laravel ルートnameを使ってパスを取得する方法
# 概要
– laravelの`route()`とPHPの`parse_url()`を用いてルートnameからパスを取得する方法をまとめる。
– 自分なりの方法です。もっといい方法あったらコメントいただけますと幸いです。。!# 方法
– 下記のように記載する。
“`php
$path = parse_url(route(‘ルートname’), PHP_URL_PATH);
“`関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた