- 1. Laravelとは
- 2. Laravel11で『PHPフレームワーク Laravel Webアプリケーション開発』差分メモ (第一部 Laravelの基礎 Chapter1)
- 3. CGI (Common Gateway Interface) について
- 4. PHPについて
- 5. 2025 年の Laravel ベストプラクティス、ヒントとコツ
- 6. PHPDocのフォーマットまとめ
- 7. TryHackMe Writeup:Cheese CTF
- 8. PHPStan(Larastan)のLevelをローカル環境で自分用にカスタマイズする
- 9. Linuxとは
- 10. PHPによる自作CSV解析関数の性能についての考察
- 11. 【Doctrine】ArrayCollectionの便利メソッド3選(filter, map, forAll)
- 12. Laravelでmigratinonを実行、Seederでデータを挿入する
- 13. CakePHPで便利なクエリビルダーを使ってみる
- 14. CakePHPでページネーションを実装する
- 15. LaravelでCommand実行する
- 16. $request->input(‘key’)は何をやっているの
- 17. 三項演算子の使い方について(初心者向け)
- 18. PHPドキュメント「リファレンスの説明」の要約
- 19. 197日目 APIの実装【準備編】(バックエンド)
- 20. PHPにおけるNULL安全
Laravelとは
# Laravelとは
– LaravelとはPHPのフレームワーク。
# フレームワークとは
**フレームワークとは開発に必要な機能をまとめた枠組みのこと。**
例えるとバーベキューセットのような物。
予め、食材(関数等)が用意されており、あとは焼く(呼び出す)だけ。
セキュリティ機能もバッチリ。まとめると
**良く使う機能は予め搭載されており、呼び出すだけ。**
**1からコードを書くより効率的に、さらにセキュリティー上も安全なwebアプリを作成できる。**# Laravelで作成できるもの
– 顧客管理システム
– ブログ
– 学習サイト
– ECサイト
– コミュニティサイト 等
Laravel11で『PHPフレームワーク Laravel Webアプリケーション開発』差分メモ (第一部 Laravelの基礎 Chapter1)
# 概要
Laravel11で下記を写経した。
[PHPフレームワーク Laravel Webアプリケーション開発 バージョン8.x対応 (ソシム)](https://amzn.asia/d/dedpj7x)
今の設定と差分があるのでメモをしていく。Laravelを触るのは4年ぶり。
最後触れたLaravelは6。## 環境
* Laravel Framework 11.29.0
* Docker version 27.2.0
* Mac (intel)
* Laravel Sail (sail/runtimes/8.3)(なお、`php artisan`コマンドについては、sailコマンドに慣れるのが微妙だったので、`sail shell`でコンテナの中に入って叩くようにしてます)
# 第一部 Laravelの基礎
## Chaper1 Laravelの概要
### RouteServiceProvider::HOMEがない“`
‘/home’
“`
みたいな文字列を作ってくれそうなのだが、そもそも
このHOME定数がもうLaravel11では無くなっている模様
CGI (Common Gateway Interface) について
# CGI (Common Gateway Interface) について
## 概要
CGI(Common Gateway Interface)は、Webサーバーと外部プログラムを接続する仕組みで、ユーザーからのリクエストに応じて動的なコンテンツを生成するために使用されます。CGIプログラムは、PerlやPython、C、PHPなどの多くのプログラミング言語で書くことができ、フォーム入力などを処理し結果をWebページに反映させることが可能です。
## CGIの仕組み
CGIは以下の流れで動作します:
1. **リクエストの受け取り**:ユーザーがブラウザでリクエストを送信。
2. **WebサーバーからCGIプログラムへの呼び出し**:WebサーバーがCGIプログラムを実行。
3. **CGIプログラムによる処理**:リクエスト内容に基づいてデータの処理や計算を行う。
4. **レスポンスの返却**:CGIプログラムが結果をHTML形式で生成し、Webサーバーを介してユーザーに返す。## CGIプログラムの例
### Perlスクリプト例
次の例では、Perlスクリ
PHPについて
# PHPについて
## 概要
PHPは「Hypertext Preprocessor」の略で、動的なWebページを生成するために開発されたサーバーサイドのプログラミング言語です。HTMLと密接に連携するため、動的なWebアプリケーションやAPIの開発に多く利用されています。
## PHPの特徴
– **サーバーサイドスクリプト**: PHPコードはサーバー側で実行され、その結果だけがHTMLとしてクライアントに返されます。
– **動的なWebページ生成**: データベースと連携することで、ユーザーのリクエストに応じてページ内容を変更できます。
– **クロスプラットフォーム**: Windows、macOS、LinuxなどさまざまなOSで動作します。
– **オープンソース**: 無料で使用できるオープンソースの言語で、コミュニティによって開発が続けられています。## PHPの基本構文
PHPは``で囲まれた部分に記述し、その中にコードを書きます。以下は、基本的な構文です。
### 1. 変数
変数は`$`記号で始まり、データを格納します。
2025 年の Laravel ベストプラクティス、ヒントとコツ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3922018/dd4a861d-5940-a072-be06-a5b87e8dbaf5.png)
2025年に近づくにつれ、Laravelはウェブ開発のトップチョイスであり続けています。開発者に強力で効率的なアプリケーションを作成するためのツールを提供しています。この記事では、Laravelのコード品質を向上させ、ワークフローを合理化するための主要なベストプラクティス、ヒント、トリックを概説します。これらの洞察は、Laravel 9、10、または11を使用しているかどうかに関係なく、Laravelを最大限に活用し、開発スキルを向上させるのに役立ちます。
## Laravelとパッケージを常に最新に保つ
Laravelを最新の状態に保つことにはいくつかの重要な利点があります:
– **セキュリティの向上**:定期的なリリースには、アプリケーションを保護する重要なセキュリティ修正が含まれています。
– **パフォーマンスの向上**:更新
PHPDocのフォーマットまとめ
# はじめに
以下ではコメント記載時の備忘録として、IDEの1つであるVSCodeのツールチップとPHPDoc出力後のイメージを抱き合わせで掲載しています。
# 動作環境
- プラットフォーム
- Windows10
- PHPDoc
- phpDocumentor v3.5.3
- IDE
- VSCode v1.94.0
# PHPDoc出力コマンド
ファイル構成が以下の場合。
- phpDocumentorの実行ファイル
- カレントディレクトリ
- ソースファイル
- カレントの
src
ディレクトリ内- PHPDoc出力先
- カレントの
doc
ディレクトリ内“`console:PHPDoc出力時のコマンド
TryHackMe Writeup:Cheese CTF
# はじめに
本記事はTryHackMeのWriteupです。Roomは[Cheese CTF](https://tryhackme.com/r/room/cheesectfv10)、Difficulty(難易度)はEasyです。
このRoomでは、PHPのfilter chainやsystemctlに関するスキルについて学ぶことができます。
## ポートスキャン
はじめにポートスキャンを実行します。ポートスキャンを実行すると、多くのポートの状態がopenになっていることが確認できます。
出力例
“`
9/tcp open discard
13/tcp open daytime
17/tcp open qotd
19/tcp open chargen
20/tcp open ftp-data
21/tcp open ftp
22/tcp open ssh
23/tcp open telnet
24/tcp open priv-mail
25
PHPStan(Larastan)のLevelをローカル環境で自分用にカスタマイズする
PHP(Laravel)での開発をしていて、PHPStanが導入されているのですが、自分用にLevelなどカスタマイズして、品質をあげて最終的に全体反映できたらいいなと思ってましたのでそのときの備忘録。
※該当プロジェクトにすでにphpstanがインストール済みを前提としています。# 1.ディレクトリを作成
“`
プロジェクトディレクトリ
├ phpstan-local ← ディレクトリを作成
├ app ← アプリケーションコード
├ vendor
├ public
… etc“`
# 2.phpstan.neonを作成
“`
プロジェクトディレクトリ
├ phpstan-local
├ phpstan.neon
“`“`
includes:
– ../vendor/nunomaduro/larastan/extension.neon //phpstan.neonから見たLarastanのファイルparameters:
paths: //対象のディレクトリ
– ../app
– ../tests
Linuxとは
# Linuxとは
LinuxとはOSの一種でオープンソースのOS。
どの種類のPCにもインストールできる。# Linuxでできること
– WindowsやMacのようにパソコンの操作ができる。
– 操作が早くなるCUI操作を基本としている。**CUI操作とは**
1. マウスを使わずキーボードだけで操作する方法。
2. コマンドを打って操作をする。
3. Linuxを操作する色々なコマンドがある。# Linuxのメリット
**1. オープンソースで無料**
Linuxはオープンソースで誰でも無料で使用できる。
ソースコードを自由に閲覧、変更できるためカスタマイズ性も高い。**2. 低スペックのPCで使える。**
システム要件が低く、軽量なディストリビューションも多いため古いパソコンでも使いやすい。**3. 多彩なディストリビューション**
用途やユーザーのレベルに応じたさまざまなディストリビューション(例:Ubuntu、Debian、CentOS、Arch Linux)が提供されているため、初心者から上級者まで選択肢が豊富。**4.プログラミング・開発環境に最
PHPによる自作CSV解析関数の性能についての考察
PHPでCSV解析を行う関数を作ったので性能を検証してみた。1行144文字の100万行のCSVファイルをパースして総なめする。すると12秒ほどかかった。この関数は
* 読み込んだカラムをすべて配列で取得する
という関数で、内部ではバッファに文字を溜めてそれを配列に格納して返り値として返している。
for文のループでカウント変数をカウントするだけのコードで同じ100万行のCSVファイルをなめてみたがこれは0.5秒ほどで終わる。ということはこの関数のコストは11.5秒ほどである。100万行に12秒かかるとレコード数が100万行に達したらそれだけ時間がかかるということで、12秒待つのはなかなかしんどいと思うので、現実的なコストとは言えない。
そこで特定のカラムだけバッファに格納してそれを文字列として返す関数を作ってみたら、これは9秒ほどかかった。そうすると3秒ほど短縮できた。
特定のカラムを検索したい場合にこの関数を使い、レコードのカラム全てを取得したい場合は添え字を戻して12秒の関数を使えば、効率化はできる。ただ、それでも最悪コストは9秒ほどである。
データベースを使った場合はどれぐ
【Doctrine】ArrayCollectionの便利メソッド3選(filter, map, forAll)
# 初めに
PHPのORMとして知られるDoctrineにはCollectionsと呼ばれるモジュールが存在します。
今回は、その中の機能の一つであるArrayCollectionでよく使うメソッドについて解説します。# 便利メソッド3選
今回紹介するのは以下の3つです。
* filter
* map
* forAll## filter
名前の通り、条件に合う要素のみを抽出するメソッドです。
filterの引数に戻り値がbool型のコールバック関数を渡すことで、条件に合う要素のみを抽出します。
コールバック関数に渡せるのは値だけであり、キーを渡すことはできません。“`php:filterの例
// ArrayCollection作成
$array = [‘key1’ => 1, ‘key2’ => 2, ‘key3’ => 3];
$arrayCollection = new ArrayCollection($array);// filter処理
$result = $arrayCollection->filter(function($value){
re
Laravelでmigratinonを実行、Seederでデータを挿入する
:::note
今回はLaravel Sailを使用します。SailはアプリケーションのDockerコンテナ内でArtisanコマンドを実行します。コマンドを書く際に
./vendor bin sailをsailに省略しています。
:::今回のハンズオンのリポジトリは以下です。
https://github.com/yamatai12/laravel-sql
# 1. 背景
業務でLaravelを使っているので勉強のために書きます。
今回はmigrationでテーブルを作成、Seederで作成後のテーブルにサンプルデータの挿入をします。# 2. migrationとは
SQLを使わずにDBを管理できる仕組みです。
以下の流れでTableを作成、削除、編集できます。
– migrationファイルを作成
– migrationを実行# 3. migrationで作成するテーブルのER図
“`mermaid
erDiagram
employees {
INT id PK “従業員ID(主キー)”
VARCHAR(50) na
CakePHPで便利なクエリビルダーを使ってみる
# 対象読者
CakePHPでクエリビルダーを使ってみたい人https://book.cakephp.org/4/ja/orm/query-builder.html
# ソフトウェア環境
|ソフトウェア|バージョン|
|———–|———|
|CakePHP |4.7.5 |
|PHP |8.1 |今回は、register関数でユーザー登録に成功したら、success関数内でセッションから取得したユーザーIDを使って
一意となるレコードをクエリビルダーで取得する処理です。“`
$selectUsers = $selectUsersTable
->find()
->select([‘id’,’name’,’username’,’password’])
->where([‘name’=>$targetName,’username’=>$targetEmail,’pass
CakePHPでページネーションを実装する
# 対象読者
CakePHPでページネーションを実装する方法を知りたい人# 検証環境
|ソフトウェア|バージョン|
————|———|
CakePHP | 4.7.5|
PHP | 8.1|# 完成イメージ
イメージはこんな感じです。
1ページあたり表示件数を10件表示するようなページングを実装してみました。![cakephp1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1169664/542674de-69c3-9bb4-315b-3b5e0608f692.png)
# 実装の手順
実装の手順は下記の通りとなります。
## Controllerにページネーションの機能を追加
Controllerのinitializeクラス(初期化クラス)にページネーションを読み込ませます。limitプロパティで、件数を指定してあげます↓
今回は、10件表示するように設定しました。
“`
$this->paginate[‘limit’] = 10;
“
LaravelでCommand実行する
:::note
command実行できるアプリケーションをLaravelで作る方法
– artisanコマンドでCommandクラス作成
– routes/console.php内に記述
:::# 背景
業務でphpファイルをコマンド実行することがありましたので復習の為にまとめます。:::note
今回はLaravel Sailを使用します。SailはアプリケーションのDockerコンテナ内でArtisanコマンドを実行します。
:::以下が今回の勉強の為に作ったリポジトリです。
https://github.com/yamatai12/laravel-command
以下参考に進めます。
https://laravel.com/docs/11.x/artisan
# Commandクラスとは
コマンド実行後に呼び出されるクラスです、コマンド実行時に行いたい処理を記述できます。# Commandクラスを作成する
:::note
`./vendor bin sail`を`sail`に省略しています。
:::“`terminal
sail artisan m
$request->input(‘key’)は何をやっているの
Laravelでのapi実行が知りたく、api.phpから処理を追っているときに、controllerで`$request->input(‘hogehoge’)`みたいなことを良くしていたためどういうメソッドかまとめる。
## inputメソッド
`$request->input(‘key’)`はどうやらリクエストに含まれる入力パラメータの値を取得しているようだ。
以下の場合、limitというパラメータを探してきて、その値を$limitに入れている。
“`php
$limit = $request->input(‘limit’);
“`
例えば以下のようなリクエストのURLがあった場合
“`
http://XXXXXX.com/api/test-api/XXXXXX?limit=10
“`
limit=10が設定されているため$limitには10が返される。
## デフォルト値
ちなみに、inputメソッドには第二引数としてデフォルト値を指定できる。
“`
$limit = $request->input(‘limit’, 0); // limitがない場合は0を返す
“
三項演算子の使い方について(初心者向け)
# はじめに
この記事は三項演算子の使い方について学習した際の備忘録です修正点および加筆が必要な場合は都度更新します
## 三項演算子とは?
三項演算子は、条件式を使って値を選択するための演算子で、?(疑問符)と :(コロン)を使って表現します。一般的な構文は以下の通りです。
“`js
条件式 ? 真の場合の値 : 偽の場合の値
“`## 基本的な使い方
例えば、数値が10以上かどうかを判定し、その結果に応じてメッセージを返す例の場合
“`js
let number = 15;
let message = number >= 10 ? “10以上です” : “10未満です”;
console.log(message); // 出力: 10以上です
“`### ネストされた三項演算子
三項演算子は、入れ子にすることも可能です。ただし、可読性が低くなるため、使いすぎには注意が必要です。
“`js
let score = 85;
let grade = score >= 90 ? “A” : score >= 80 ? “B” : score >= 70 ? “
PHPドキュメント「リファレンスの説明」の要約
# リファレンスとは?
https://www.php.net/manual/ja/language.references.whatare.php
PHPのリファレンスは、同じ変数の内容を異なる名前で呼び出す機能です。以下にリファレンスの主な特徴をまとめます:
## リファレンスの特徴
1. **エイリアス**: リファレンスは変数のシンボルテーブルのエイリアスとして機能します。
2. **ポインタとの違い**: Cのポインタとは異なり、メモリアドレスを直接扱うものではありません。
3. **ガベージコレクション**: すべてのリファレンスが削除されるまで、参照先のデータはガベージコレクションの対象になりません。
4. **変数の扱い**: 通常の変数もリファレンスとして扱われ、ガベージコレクションの観点からは`=&`で代入されたリファレンスと区別されません。
## リファレンスの動作
– リファレンスを使用すると、複数の変数名が同じデータを指すことができます。
– 配列要素やオブジェクトのプロパティにもリファレンスを使用できます。
– `foreach`ループでリフ
197日目 APIの実装【準備編】(バックエンド)
仕事でAPIをさわる機会があり、APIってすごいな!と思ったので今後APIをさわる機会がある方が少しでもAPIへの理解が早くできるように初心者ながらにまとめていきたいと思います!
1つにまとめきれないくらい情報があるので分けていきます!
今回は「APIとは?」「環境設定で必要なもの」「ルーティング設定」についてまとめましたので誰かの力になればなによりです!## 第1話《APIってなんぞやッ!?》
API(Application Programming Interface)は、アプリケーション同士が通信し、データや機能をやり取りするためのインターフェース(仕組み)です。
APIを使うことで、異なるシステムやサービスが相互に連携し、データや機能を共有できるようになります。**1.データアクセス**
・システムやデータベースに保存されているデータにアクセスし、外部からリクエストに応じてそのデータを提供します。
例:商品情報、ユーザー情報、注文履歴などを取得するためにAPIを呼び出す。わかりやすく言うと、`フロントとバックを繋げる橋渡し的な役割`です。
**2.機能の理由**
PHPにおけるNULL安全
# NULL安全とは
NULLによるエラーをコンパイルまたは静的解析で検出し、実行時にNULLによるエラーを起こさないことです。NULL安全が高いか低いかは基本的にはプログラム言語に依存します。型には基本的にNULL許容型とNULL非許容型があり、それらが別物として扱われることがNULL安全を満たす条件です。理由は後述します。PHPにおけると銘打っておきながら、まずはkotlinという言語を例に上げてNULL安全の説明をします。kotlinは静的型付き言語なので基本的に型を定義していくのですが、通常定義される型はNULL非許容型になります。NULL非許容型とはその名の通りNULLを代入できない型のことです。
“`kotlin
//NULL非許容型
var intObject: Int = 10
var stringObject: String = “test”
var sampleObject: SampleObject = SampleObject()//以下をコンパイルするとエラー(最近はIDEで怒ってくれる)
var intObject: Int = null
va