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

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

Laravel 学習(サービスプロバイダ)

## 用語

https://qiita.com/_wow_/items/79246b8d8268708dafe7

## サービスプロバイダ

Laravelプロジェクト直下で下記コマンドを実行する。

“` cmd
php artisan make:provider HelloServiceProvider
“`

下記ファイルが作成される。
“` php:Laravelプロジェクト\app\Providers\HelloServiceProvider.php

元記事を表示

Laravel 学習(view × コントローラ)

## はじめに

前回viewメイン、コントローラメインの記事を記載しました。

https://qiita.com/_wow_/items/1d2c262cbfc36be7e19e

https://qiita.com/_wow_/items/3fc7387b4a62454b1566

今回は両方を使って学習したものを記載しています。

## クエリ文字列

“` php:web.php
Route::get(‘/hello’,’App\Http\Controllers\HelloController@index’);

Route::post(‘/hello’,’App\Http\Controllers\HelloController@post’);
“`

“` php:HelloController.php

元記事を表示

プログラミング言語・ライブラリ・フレームワークのバージョンアップ手法

## はじめに

プログラミング言語とフレームワークをバージョンアップする機会があったため、バージョンアップの方法やその注意点などを解説していきます。
今回はPHPとLaravelを例に挙げて解説していきます。

## セマンティックバージョニングとは

各プログラミング言語やライブラリ、フレームワークにはそれぞれバージョンが定められており、コードを更新するごとにそのバージョンが変わっていきます。

プログラミング言語やライブラリで利用されるバージョニング手法はセマンティックバージョニングと呼ばれ、3つのセクションに区切られて表示されます。左にある数字ほど大規模な変更が含まれ、それぞれ以下のような意味があります。

![versions.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1087368/3df60b87-b2dc-678b-efdf-b94b31bf08c2.png)

– メジャーバージョン:互換性のない変更の場合にバージョンを上げる
– マイナーバージョン:後方互換性がある機能を含む変更

元記事を表示

Laravel 学習(コントローラ)

## コントローラ作成

Laravelプロジェクト直下で下記コマンドを実行すると、
基本コード付きのファイルが作成される。

“` cmd
php artisan make:controller HelloController
“`

“` php:Laravelプロジェクト\app\Http\Controllers\HelloController.php

元記事を表示

Laravel学習(view)

## ルーティング

下記ファイルは、http://localhost/Laravelプロジェクト/public/ (xamppを使ってる場合)に
対してwelcomeというviewを返す。

“` php:Laravelプロジェクト\routes\web.php

PHP高性能フレームワークにおけるWorkermanデーモンの原理を深く理解する

私たちの日常のプログラミングでは、PHPのThinkタスクやPHPアーティスト、PHP Yiiなど、継続的に実行する必要のあるタスクがよくあります。これらは一般的にnohupを使用してバックグラウンドにマウントし、長期間の実行状態を維持します。同様に、Workermanでは`php index.php start`のようなコマンドを使用してプロセスを開始しますが、nohupを使用してバックグラウンドで実行する必要はありません。なぜこれが実現できるのか、不思議に思う方もいるかもしれません。今日は、Workermanデーモンプロセスの実装原理について詳しく分析します。

まず、いくつかのプロセス関連の知識を理解しましょう:

– **親プロセス**:親プロセスは他のプロセスを生成するプロセスです。あるプロセスが別のプロセスを作成すると、作成者は親プロセスと呼ばれ、作成されたプロセスは子プロセスとなります。親プロセスはプロセス識別子(PID)を通じて作成した子プロセスを識別できます。
– **子プロセス**:子プロセスは親プロセスによって作成された新しいプロセスです。子プロセスは親プロセスの

元記事を表示

PHP の SplPriorityQueue を使って、推理作家一覧を作りたい

## きっかけ

先日YouTubeで、PHPカンファレンス福岡での、きんじょうひできさんの「[SPLから始める「データ構造」入門](https://www.youtube.com/watch?v=zuMMVvmWVVQ)」という動画を見ました。

SplというPHPの標準ライブラリが紹介されていて、便利そうだったので、何か作ってみたいと思いました。

## SplPriorityQueue とは

[PHPマニュアルの説明はこちら](https://www.php.net/manual/ja/class.splpriorityqueue.php)です。

[優先度付きキューについては、いろいろな説明がある](https://ja.wikipedia.org/wiki/%E5%84%AA%E5%85%88%E5%BA%A6%E4%BB%98%E3%81%8D%E3%82%AD%E3%83%A5%E3%83%BC)ようです。
ざっくり言うと、配列を並べ替えながら入出力するのが、ものすごく早いようです。

とりあえず覚えるべきメソッドは、insert()と、extract()の2つです

元記事を表示

Laravelのpaginatorで件数カウントとデータの取得が同時に行われるのを防ぐ

### 何がしたいか
ページが重いので軽くしたい。paginate使ってるのでデータ取得と件数カウントで同時に2発クエリが走っていて、データ取得が遅いクエリであればある程鬱陶しい。というかそもそもなんでpaginate使ってるの・・・?これページングはしないよ・・・?というのはあるんですけど、まぁそこ愚痴っても仕方ない。

### 前提
Laravel 6 古いです。変えたいです。
DBはmysql 8.0(昔なのでパッチバージョンは忘れました)

### どうするか
まぁ大体これが全てなんですが

https://zenn.dev/third_tech/articles/3f24490d062d56

Eloquentの方のpaginateがこう
“`PHP
/**
* Paginate the given query.
*
* @param int|null $perPage
* @param array $columns
* @param string $pageName
* @param int|null $page
* @return \Ill

元記事を表示

PHPのDBクラス

## PHPでDBクラスを作成
PHPを最近触れたばかりなので慣習とかは分かり兼ねるのですが、DB接続するためのクラスは情報が少なかったので作りました。
最低限のDBを操作するメソッドを用意してます。
また、PHPは基本MySQLを使うことが多いかと思いますが、インターフェースを用意してます。本記事はMySQLの使用例のみ掲載してます。(今後更新するかもしれません。)

## インターフェース作成
“`php:Idb.php

“`

## DB実装クラス作成
require_onceで作成したインターフェースを読み込んでください。
ホスト名・ユーザ名・パスワードは自身の環境に応じて設定してください。

“`php:MySql.php

元記事を表示

Laravelを用いた開発でgit pullすると500 Server Errorになった話と対処法

Laravelを用いたチーム開発をしていたときに、IDE上にErrorやWarningは出ていないのにローカルでページを確認すると500 Server Errorが表示されて困惑していたときの話です。
また、その際に行った対処の方法を誰かの助けになればと思い、記録として残します。
(※初めての技術記事投稿のため、間違い等がある場合はご指摘いただけますと幸いです。)

# 開発環境
OS : Ubuntu 24.04 (WSL2上で利用)
IDE : JetBrains PhpStorm 2024.2
Docker : Docker Desktop 4.33.1
バックエンド : Laravel 10.47.0
フロントエンド : React 18.2.0
バンドラ : Vite 5.0.0

# 発生した問題
チームで開発していたプロジェクトのmainブランチをpullし、ホットリロードで更新された画面を確認すると500 Server Errorが表示された。
このとき、コンフリクトがあったわけでもなくIDE上でErrorやWarningもない状態だった。
Dockerやホットリロード

元記事を表示

Laravel 学習(アプリ構成)

## はじめに
Laravelのアプリ構成について学んだことを記載していきます。

Laravelで作成されたプロジェクトはファイルやフォルダが多いので、
chatGPTに使用頻度の高いものをピックアップしてもらいました。
※現状ほぼchatGPTの回答を使っています。
 学習を進めていく中で更新していく予定です。

## アプリ構成

### 1. **app/**
– **概要**: アプリケーションの主要なビジネスロジックが含まれるディレクトリです。
– **主要サブディレクトリ**:
– **Models/**: アプリケーションのデータベースのエンティティを表すEloquentモデルが配置されます。例: `User.php`。
– **Http/Controllers/**: ユーザーのリクエストを処理するコントローラが配置されます。例: `HomeController.php`。
– **Http/Middleware/**: リクエストがコントローラに渡される前に実行されるミドルウェアが配置されます。例: `Authenticat

元記事を表示

Laravel の laravel と framework の違い

数年ぶりに Laravel に触れて、禿げそうなくらい詰まったポイントがあるので備忘がてらまとめておきます。

# 結論

– [laravel/laravel](https://github.com/laravel/laravel) リポジトリは Laravel プロジェクトのスケルトンコード
– [laravel/framework](https://github.com/laravel/framework) リポジトリはいわゆる依存ライブラリ

# なんでそういう話が気になったのか

とあるプロジェクトを担当することになり Laravel のコードベースを眺めていたが、あまりに久しぶりだったので、何が Laravel のコードで何が開発フェイズで追加されたコードかわかりませんでした。

しかも Git 管理もされておらず 💩 履歴を追うこともできず。。。

ということで [Creating a Laravel Project](https://laravel.com/docs/11.x/installation#creating-a-laravel-project) した com

元記事を表示

試す価値のある7つのツール、使ったことがありますか?

開発者として、ワークフローを合理化し、生産性を向上させるためにツールを活用するのは一般的なことです。ここでは、すべての開発者が知っておくべきだと思う7つのツールをまとめました。これらのツールは効率を高め、開発作業を楽にし、リラックスする時間を増やしてくれるでしょう。

経験豊富な開発者であれ、初心者であれ、この記事であなたのニーズに合ったツールが見つかることを願っています。

### [Warp](https://www.warp.dev/) – AIターミナル

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/79dzunehtgzm87fk0fxg.png)

WarpはRustで開発されたオープンソースのターミナルで、多くの機能を備えており、開発者の生産性を大幅に向上させることができます。その最も人気のある機能は、AI駆動のコマンド検索です。コマンドを入力するときに、Warpは自然言語の説明に基づいた提案を提供し、開発者が正しいコマンドを迅速に見つけるのを助けます

元記事を表示

デバッガについて

## デバッガとは
デバッガとはバグの原因を見つける作業を手伝ってくれるツールのことを言う。
ターミナルからvar_dumpやechoなどで出力結果をいちいち確認しなくても、VScode上で出力結果を確認することができる。
また、任意の行で実行を止めてその時点での変数の中身を確認することもできる。

## PHPのよく使われるデバッガは「Xdebug」

Xcodeの特徴は以下の通りである。
– コードにブレークポイントを設定して1行ずつアプリケーションを実行
– ブレークポイントごとに変数の中身を出力して確認
– エラーが発生するまでの経過を詳細に表示
– VSCodeと一緒に使える

元記事を表示

クソ雑魚のワイ、symfonyのコードリーディングしてみた①

自分は25卒の学生です。
この時期に内定がまだなく、流石に焦っています。

__「この時期に内定ないのヤバいって。危機感持て。」__
とあるメンズコーチの言葉が脳裏をよぎります。

これまで就職活動に力を入れ、技術勉強は中断していました。
ですが就職活動の時間を振り返り、このように思いました。

__時間の無駄だったな。__

ということで、何かしらの技術勉強も並行しようと思い、コードリーディングに挑みます。
クソ雑魚エンジニア、いや、エンジニアですらない僕ですが、アウトプットを目的として記事を書きます。

優しい目で見守ってください。

## Symfonyとは

READMEには以下のように書いてあります。

英語
Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications and most of t

元記事を表示

【PHP8.4】PHP8.4の新機能

[PHP8.4](https://qiita.com/rana_kualu/items/b195b1adc60b763843d9) / [PHP8.3](https://qiita.com/rana_kualu/items/91111443105a75a55e2f) / [PHP8.2](https://qiita.com/rana_kualu/items/fc4b02e2daaf102aa92f) / [PHP8.1](https://qiita.com/rana_kualu/items/a6601b49e0591eb42200) / [PHP8.0](https://qiita.com/rana_kualu/items/fe7998fbe773544d5d25)

2024/08/13、PHP8.4が[フィーチャーフリーズ](https://wiki.php.net/todo/php84)しました。
言語機能に関わるような機能の追加・変更が締め切られたということです。
今後はデバッグを繰り返しながら完成度を高めていき、2024/11/21にPHP8.4.0がリリースされる予定です

元記事を表示

PHP × Laravel 学習(用語)

## はじめに

PHP、Laravelの用語について学んだことを記載していきます。

## PHP

Web開発向けの言語
サーバサイドで動くスクリプト言語

シンプルなためプログラミング初心者にもお勧めできる言語

– ビルトインサーバ
PHP5.4以降の動作確認用の機能
本番運用を想定したサーバではないためこの機能でのアプリ公開はNG

## Laravel

PHPで使われるMVCフレームワークでモダンな開発が可能

[【解説】MVCモデルとは?メリット・デメリット](https://system-kaihatu.com/archives/3204#:~:text=MVC%E3%83%A2%E3%83%87%E3%83%AB%E3%81%A8%E3%81%AF%E3%80%81%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0,%E5%9B%B3%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82)

https://zenn.d

元記事を表示

vscodeでphpのセットアップ

## メインセットアップ

下記サイトをもとに拡張機能のインストールまで進めていきます。
※デバッグ実行やComposerなどは後述の手順でセットアップをします。
 Gitはすでに入っているため飛ばします。

https://qiita.com/tfukumori/items/97a8f1ac6532612b004f

## サブセットアップ

### デバッグ実行

デバッグ実行時になぜかブレークポイントで止まらなかったので、正常に動いた設定を下記に記載しています。

setting.json
・何もしない

“` launch.json
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “Listen for XDebug”,
“type”: “php”,
“request”: “launch”,
“port”: 9000
},
{
“name”: “Launch currently open script”,
“type”

元記事を表示

huskyでdocker compose exec でエラーが出て動かなかった

# はじめに

こんにちは、エンジニアのkeitaMaxです。

今回はhuskyを使用してdocker compose exec コマンドを実行した時にエラーが出て困ったことがあったので、備忘録として残します。

# 問題

“`.husky/pre-commit
docker compose exec app vendor/bin/phpstan analyze
docker compose exec app composer phpcs .
“`

huskyを使用してコンテナの中に入ってコマンド実行したら以下のようエラーが出て実行できませんでした。

“`
% git commit -m “add husky”
the input device is not a TTY
husky – pre-commit script failed (code 1)
“`

# 解決策

`docker-compose exec` に -T オプションを追加すると治るらしいです。

https://tex2e.github.io/blog/infrastructure/docker

元記事を表示

Laravelを1日でマスターしたい人向けチュートリアル

## Chapter 1: Laravelの紹介
Laravelは、PHPで書かれたオープンソースのWebアプリケーションフレームワークです。MVC(Model-View-Controller)アーキテクチャに基づいており、開発者が効率的にWebアプリケーションを構築できるように設計されています。豊富な機能と優れたドキュメントが特徴です。

## Chapter 2: 開発環境のセットアップ
Laravelを使用するには、PHP、Composer、およびLaravel自体をインストールする必要があります。以下のコマンドで新しいLaravelプロジェクトを作成できます:
“`bash
composer create-project –prefer-dist laravel/laravel myApp
“`

## Chapter 3: Laravelのディレクトリ構造
Laravelのディレクトリ構造は、アプリケーションの異なる部分を整理するために設計されています。主なディレクトリには、`app`、`config`、`database`、`resources`、`routes`など

元記事を表示

OTHERカテゴリの最新記事