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

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

独習PHP_第4版のアウトプット(第1章_PHPに必要な知識_中編)

「独習PHP 第4版」を読んだ内容を、簡潔にまとめています。

最新の知見も合わせると情報が古い箇所もあるため、その点はアップデートしました。

早速、第1章 中編で学んだ内容をアウトプットしていきます。

## 第1章 イントロダクション 中編

### 何故PHPを使用するのか?

本書の著者の視点として、**PHPを学習することには次のようなメリット**があります。

– **習得が容易であること。**
文法をシンプルに記述することができます。また、あらかじめ用意された**ライブラリ**(コーディングの便利なツール)も充実しています。

– **ドキュメントが充実していること。**
歴史のある言語のため、様々な構文と用例が紹介されています。**公式ドキュメント**を活用するだけでも、非常に勉強になります。

– **利用できる環境が豊富であること。**
他の言語も引けを取らないものの、対応している**ホスティングサービス**(レンタルサーバー)がPHPでは特に多いです。また、**AWS**などのクラウドサービスでも積極的にサポートしています。

ここま

元記事を表示

【Laravel】Pintで改行コードがLFになる問題の解消方法!

泉([@izumin_0401](https://twitter.com/izumin_0401))です。

今回は、LaravelのPintで改行コードがLFになる問題の解消方法を解説しやす!!

# ブログ記事はこちら

https://traveler0401.com/laravel-pint-lf-crlf/

# そもそもpintでは無理
そもそもですが、pintでは改行コードの設定は変えられないっぽいです。

なので、「.gitattributes」で改行コードを設定します。

# 「.gitattributes」の設定
“`
* text=auto eol=crlf
“`
これでOK!!

# まとめ
もはやLaravel Pintの解説ではないのである!

ではまた!

# 最後に
暇つぶしに[Twitter](https://twitter.com/izumin_0401)と[ブログ](https://traveler0401.com/)もやってるので見てね。

元記事を表示

access.logをAthenaで分析できる環境を構築してみた話

## 概要
EC2で収集した`access.log`をS3に転送して、S3上のgz形式のログファイルをAthenaで分析できる環境を**作成**しました。

## そもそもAthenaってなに?

> Amazon Athena は、オープンソースフレームワーク上に構築されたサーバーレスのインタラクティブな分析サービスで、オープンテーブルとファイル形式をサポートしています。
> Athena は、ペタバイト規模のデータが存在する場所で分析するための簡素化された柔軟な方法を提供します。Amazon Simple Storage Service (S3) データレイクと 25 以上のデータソース (オンプレミスデータソースや SQL または Python を使用した他のクラウドシステムを含む) からデータを分析したり、アプリケーションを構築したりできます。
> Athena は、オープンソースの Trino および Presto エンジンと Apache Spark フレームワーク上に構築されており、プロビジョニングや設定は不要です。

要するに **S3にデータを設置す

元記事を表示

【PHP】 スーパーグローバル変数(定義済み変数)

## スーパーグローバル変数とは

PHPのスーパーグローバル変数は、定義済み変数でプログラムコード中何処からでも使用可能な変数のことです。 関数やメソッドの内部からアクセスする際にも「global $変数名」などとする必要がない。スーパーグローバル変数は9種類あります。

## 変数一覧

1. [**$GLOBALS (グローバル変数)**](https://qiita.com/With21/items/78e80197cd0f7fbe36c5)
+ グローバルスコープに現在定義されているすべての変数への参照
+ 連想配列として使用
2. **$_SERVER (サーバー変数)**
+ サーバー情報および実行時の環境情報
+ 連想配列として使用
3. **$_GET (GET変数)**
+ URLパラメーター、HTTP GET として送られてきた値を取得する変数
+ 連想配列として使用
4. **$_POST (POST変数)**
+ HTTP POST で送られてきた値を取得する変数
+ 連想配列として使用
5. **$_FILE

元記事を表示

PHP(動的型付け)・PHP(動的型付け+型指定)・Go(静的型付け)の比較

型に注目してPHPとGoを比較してみます。

1年ほど前まではPHPで型を指定せずに実装していたので、その視点からまとめてみました。

## 動的型付け(PHP)の主なメリットデメリット

### メリット

少ない工数で実装が可能。型を指定しなくて良いため、コード量が少なくなる、及び型について考える必要がない。経験の少ないエンジニアでも容易に実装可能。

### デメリット

型の指定がないため、実装時に型の違いに気づけず、予期せぬバグが発生しやすい。また、型がバグの原因である場合に原因の追求に時間がかかる。

型の指定がないことで、メソッドの引数を見た際にどのような内容や意図の引数なのか分かりにくい。毎回、元のデータを追っていくのが手間となる。

例1)記事詳細情報取得
“`
class ArticleService
{
/**
* 記事詳細情報取得
*/
public function detail($id)
{
return [$article, $dramaList, $related]

元記事を表示

PATHの通っていない場所にインストールしたPHP向けの拡張モジュールコンパイル

– `/usr/bin/php`: PHP8.3(APTで入れたもの)
– `/opt/php8.4/bin/php`: PHP8.4 RC1(ソースからビルドしたもの)

という2バージョンが共存しているマシンで、PHP8.4 RC1向けにXdebugをビルドしたかった。
8.4のphpizeを使えば行けるのかと思ったらそうではなかったのでメモ。

普通にphpize+./configureしたときのログ

“`console
~/xdebug-master$ /opt/php8.4/bin/phpize
Configuring for:
PHP Version: 8.4
PHP Api Version: 20240924
Zend Module Api No: 20240924
Zend Extension Api No: 420240924
$ ./configure –prefix=/opt/php8.4
checking for grep that handles

元記事を表示

【PHP】Carbon使用する時に気をつけること

# はじめに
Carbon使用する時に気をつけたいと思ったのでメモです。

# SubMonthsメソッド

– 1ヶ月前を取得を検索するとだいたい`subMonth()`メソッドが結果としてよく出ているが、月末になると日付がずれてしまうので注意が必要。

“`
$date = new Carbon(‘20241031’)->subMonth(1);
echo($date);
“`

– 結果は`2024-10-01 00:00:00`になり、期待している`2024-09-30 00:00:00`にはならない。CarbonはDateTimeのラッパーとして、存在しない日付に対して適切に調整してくれるらしい。この場合は9月31日は存在しないので、10月1日に調整してくれているみたい。

# subMonthsNoOverflowメソッド

– 上記のようにならないために`subMonthsNoOverflow`を使用すると良いみたい。

“`
$date = new Carbon(‘2024-10-31’)->subMonthsNoOverflow(1);
echo $date;

元記事を表示

Laravelでテーブルのカラムを変更するための方法

# はじめに
Laravelを使ってアプリを作る際にテーブルのカラム変更が発生した場合のマイグレーションの備忘録として記録します。

# (例)User Tableのカラムを変更したい場合

(注意)
テーブルの更新をする場合は、あらかじめデータのバックアップを取得しておいてください。

ユーザーテーブルを例に説明します。

(更新前)

|ユーザー名|メールアドレス|パスワード|作成日|更新日|
|———|————-|——–|——|——|
|Qiitaたろう|taro@qiita.com|qiitAbc|2024-01-01|2024-02-01|

(更新後)

|ユーザー名|メールアドレス|パスワード|作成日|更新日|権限|
|———|————-|——–|——|——|—-|
|Qiitaたろう|taro@qiita.com|qiitAbc|2024-01-01|2024-02-01|true|

権限の列を増やしたい場合、Mig

元記事を表示

WordPressで各ページのh1に任意の画像を設定する方法

WordPressで各ページのh1に任意の画像を設定する方法を紹介します。

## 使用しているテーマとプラグイン
テーマ:[Cocoon](https://wp-cocoon.com/)
プラグイン:[Advanced Custom Fields](https://www.advancedcustomfields.com/)

## カスタムフィールドの設置
プラグイン『[Advanced Custom Fields](https://www.advancedcustomfields.com/)』をインストール&有効化して、`Field Type`を`image`に設定します。
`Field Label`に適当な名前を付けて保存します。

![image.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1902958/ed6b2cd1-d529-5abb-fedb-87ac782b802d.jpeg)

これで、各ページの編集ページの下部にカスタムフィールドが出現します。↓
![postedit.pn

元記事を表示

PHPStanのエラー箇所へ1クリックで飛べるようにする設定

# 初めに
PHPStanで解析をした際、エラーの箇所をいちいち手動で開くのってちょっと面倒ですよね。
今回は、エラーの箇所にすぐに飛べるようになる設定をご紹介します。

# エラーの箇所に飛びたい!
PHPStanでエラーを検出すると以下のような結果が出力されます。

“`sh
$ ./vendor/bin/phpstan analyse
Note: Using configuration file C:\path\to\project\phpstan.neon.
3/3 [============================] 100%

—— ————————————————————————–
Line level\Level0.php
—— ————————————————————————–
:759 Method Util\Level0

元記事を表示

VSCodeの型ヒント表示を無効化する

# 課題
VSCodeバージョンアップで、関数の引数や返値の型ヒントが自動的に表示されるようになった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20427/a1e85986-ac6c-f390-09ae-aadaafc7da8a.png)

邪魔なことが多いので非表示にしたいが、設定方法の発見に意外と時間がかかったのでメモ。

# 解決
変更する設定 : `Editor › Inlay Hints: Enabled`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20427/0fa711c3-23dd-c784-2aa2-45fd30302bc4.png)

`off`にすると非表示にできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/20427/7b7017

元記事を表示

Strategies to Improve Your Design Skill

What are the best strategies to improve your design skills? Although graphic design is a fantastic sector, it is always changing and developing. This implies that sometimes graphic designers may feel as if their graphic design abilities are no longer current and that they have been left behind in the business. Does it sound very familiar? Do not panic; all you have to do is return your design abilities to their previous brilliance! Therefore, here are many strategies to hone your graphic design

元記事を表示

Laravel ORM(Eloquent)チートシート

# Laravel ORM(Eloquent)チートシート

## モデル操作の詳細

### モデルの定義
“`php
class User extends Model
{
// テーブル名の指定(デフォルトはモデル名の複数形)
protected $table = ‘users’;

// 更新可能なカラム
protected $fillable = [‘name’, ‘email’, ‘password’];

// 非表示にするカラム(例: JSONシリアライズ時)
protected $hidden = [‘password’];

// キャストするデータ型
protected $casts = [
‘email_verified_at’ => ‘datetime’,
];
}
“`

### データの取得(詳細)
“`php
// 全件取得
$users = User::all();

// 条件付き取得(1件だけ)
$user = User::where(‘email’, ‘

元記事を表示

171日目 Laravel(PHP)でマイグレーションファイルを使いこなそう! by社畜♀

# 第2話《マイグレーションって便利だなぁ~》

Laravelのマイグレーションを触る機会があり、理解できると楽しかったのでまとめておきたいと思います!
自分と同じような人の助けになればなによりです。:bow_tone1:

Laravelのマイグレーションは、データベースのスキーマ(テーブル構成やカラムなど)を簡単に管理・変更するための強力なツールです。
主にWebアプリケーションフレームワークで使用され、データベース構造の変更をコードで管理できるため、変更履歴を追跡することが可能です。
また、マイグレーションはバージョン管理システムを通じて他の開発者と共有することも簡単に行えます。:ok_hand_tone1:

## マイグレーションの基本コマンド

Laravelでは、マイグレーションを管理するためのさまざまなコマンドが用意されています。

**1.マイグレーションファイルの作成**

新しいマイグレーションファイルを作成するには、Laravelプロジェクトのルートディレクトリで以下のコマンドを実行します。

“`bash:bash
php arti

元記事を表示

【Laravel】X-Forwarded-ForからIPアドレスを取得する方法!

泉([@izumin_0401](https://twitter.com/izumin_0401))です。

今回は、LaravelでX-Forwarded-ForからIPアドレスを取得する方法を解説するンゴ。

# ブログ記事はこちら

https://traveler0401.com/laravel-x-forwarded-for/

# 【Laravel】X-Forwarded-ForからIPアドレスを取得する方法

“`php
header(‘X-Forwarded-For’);

if ($forwardedFor) {

元記事を表示

独習PHP 第4版のアウトプット(第1章_PHPに必要な知識_前編)

こんにちは。

PHP & Laravelを使用する企業に内定したため、先取学習を始めました。

「独習PHP 第4版」を読んだ内容を、簡潔にまとめております。

最新の知見も合わせると情報に古い箇所もあるため、その点はアップデートしました。

早速、第1章_前編で学んだ内容をアウトプットしていきます。

## 第1章 イントロダクション 前編

### PHPについて

**PHP**は**Webアプリケーション**の作成を容易にするために開発された、**サーバーサイドのスクリプト言語**です。

スクリプト言語とは、主にウェブ開発やタスクの自動化に使用される高水準(人間に読みやすい)のプログラミング言語です。

また、Webアプリケーションとは、インターネットを経由して利用できるサービスやアプリのことで、具体的にはGoogleの検索エンジンやAmazonのショッピングサイトなどがあります。

### クライアントとサーバー

Webの世界では「**クライアント**」と「**サーバー**」という概念があります。

– **クライアント**:情報を受け取る側、つまりユーザーのデバイスや

元記事を表示

phpのオブジェクト指向の整理

# 始めに
オブジェクト指向はクリーンアーキテクチャするうえでは持っておきたい知識だと思ってる。

今まで以下のような書籍を読んだが、これから会社都合でガッツリlaravel書くことになりそうなのでphpならどんなふうに考えるのかの整理のために書いていく

# 今まで読んだオブ脳関係

(多分絶版だけど。アフィリンクじゃないよ!)
メルカリにも中古は有るよ。
### オブジェクト指向設計実践ガイド(Ruby)
Ruby触るならイメージ湧きやすと思う。

https://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E8%A8%AD%E8%A8%88%E5%AE%9F%E8%B7%B5%E3%82%AC%E3%82%A4%E3%83%89-Ruby%E3%81%A7%E3%82%8F%E3%81%8B%E3%82%8B-%E9%80%B2%E5%8C%96%E3%81%97%E3%81%A4%E3%81%A5%E3%81%91%E3%82%8B%E6%9F

元記事を表示

Laravel+Breezeの簡易的な管理者機能

Laravelを使ったWebアプリを作成中、管理者機能を作る必要があり、簡易的に機能を作ったので備忘録として残しておきます。筆者は、Laravel初学者なのでかなり強引に作っているかと思います。その点はご了承ください。
(本当は、Laravel Permissionなどを使ったほうがいいと思います)

### 環境
・Laravel 10.48.20
・PHP 8.2.21
・Breeze

### 経緯
特定の機能は管理者のみに表示したいので、管理者機能を作りたい。
初期データで管理者を入れ、ほかの新規登録ユーザーは自動的に一般ユーザーにしたい。

### 具体的なコード
“`php:users_table
public function up(): void
{
Schema::create(‘users’, function (Blueprint $table) {
$table->id();
$table->string(‘name’);
$table->string(‘e

元記事を表示

PHPで作ったウェブサービスにおいて、よく使われるアルゴリズム

PHPで作られたウェブサービスでは、以下のようなアルゴリズムがよく使われます:

## 検索・フィルタリングアルゴリズム

多くのウェブサービスで重要な機能である検索やフィルタリングには、以下のアルゴリズムが活用されます:

– 全文検索アルゴリズム
– フィルタリングアルゴリズム(例:価格範囲、カテゴリー等)
– ソートアルゴリズム(例:人気順、新着順等)

これらは、ぐるなびやRettyなどの飲食店検索サービス、CAMPFIREのようなクラウドファンディングサイト、一休.comのような旅行予約サイトで頻繁に使用されています。

## レコメンデーションアルゴリズム

ユーザーの行動履歴や属性に基づいて、おすすめのコンテンツや商品を提示するアルゴリズムです。Facebookのおすすめの友達機能やタイムラインの表示などに使用されています。

## ページネーションアルゴリズム

大量のデータを複数のページに分割して表示するアルゴリズムです。多くのウェブサービスで利用されており、ユーザーエクスペリエンスの向上に貢献します。

## キャッシュアルゴリズム

頻繁にアクセスされるデータをメ

元記事を表示

PHPで書いたコードのメモリ消費だとかのベンチマークを取得するには?

PHPでコードのメモリ消費やパフォーマンスのベンチマークを取得するには、以下のような方法があります:

## memory_get_usage() 関数の活用

PHPの組み込み関数 `memory_get_usage()` を使うことで、現在のスクリプトが使用しているメモリ量を簡単に測定できます。

“`php
$startMemory = memory_get_usage();

// ベンチマークしたいコード

$endMemory = memory_get_usage();
$memoryUsed = $endMemory – $startMemory;

echo “使用メモリ: ” . $memoryUsed . ” バイト”;
“`

## 時間計測との組み合わせ

メモリ使用量と実行時間を同時に計測することで、より包括的なベンチマークが可能です:

“`php
$startMemory = memory_get_usage();
$startTime = microtime(true);

// ベンチマークしたいコード

$endTime = microtime

元記事を表示

OTHERカテゴリの最新記事