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

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

生年月日から年齢を計算する方法を各プログラミング言語で書いてみた

# はじめに

プログラミングでよくあるタスクの一つに、生年月日から年齢を計算することがあります。今回は、各プログラミング言語でこのタスクを1行で実装してみました。どの言語でも、標準ライブラリを活用すれば簡単に計算できます。

## Python
“`python
age = (datetime.datetime.now() – datetime.datetime(1984, 8, 21)).days // 365
“`
Pythonでは、`datetime`モジュールを使い、現在の日付と生年月日との差を日数で計算し、年数に換算しています。

## JavaScript
“`javascript
const age = Math.floor((new Date() – new Date(‘1984-08-21’)) / (365.25 * 24 * 60 * 60 * 1000));
“`
JavaScriptでは、`Date`オブジェクトを利用して、生年月日と現在の日付の差をミリ秒で計算し、年数に換算しています。

## Ruby
“`ruby
age = ((Time.

元記事を表示

#35 PHP CSVを読み込み、文字化けさせずに配列で出力する

## はじめに
今回はPHPでCSVを読み込み、配列として一行ずつ出力する方法について紹介します。
データのやり取りによく使われるCSVについてや、使用する関数について簡単に解説していますので、最後までご覧いただけましたら幸いです。

## CSVを用意する
### CSVとは
Comma Separated Valueの略で、カンマでフィールドを区切ったテキスト形式のファイルです。
ソフトウェア同士での互換性が高く、手元でのデータの修正ができたりのとデータの管理しやすくなります。

#### sample.csv
“`plaintext
商品名,値段
チョコレート,”100″
クッキー,”200″
ケーキ,”3,000″
“`
先頭行が表の見出し、2行目以降がデータとなります。

#### ダブルクオーテーションの意味
ダブルクオーテーション(“)で囲まれた文字列は、区切り文字があっても区切らず、一つの値とみなします。
例えば『10,000』という値があるときそれぞれ以下のようになります。
“`
『10,000』 → 『10』『000』
『”10,000″』 → 『10,000

元記事を表示

PHPで特定の日付からNヶ月前の月の初日を取得する方法

## はじめに
PHPで日付を操作する際、一見シンプルなタスクでも、特定の要件に合わせると予期しない問題が発生することがあります。この記事では、**特定の日付からNヶ月前の月の初日**を正確に取得する方法について説明します。

## 問題の背景
例えば、今日が8月20日の場合、2月1日を取得することが目標です。
最初は strtotime 関数を使用して、特定の日付から5ヶ月前の月の初日を取得しようとしました。以下は最初に書いたコードです:

“`
$today = date(‘Y-m-d’);
$end_date = date(‘Y-m-d’, strtotime(‘last day of last month’, strtotime($today)));
$start_date = date(‘Y-m-d’, strtotime(‘-5 months’, strtotime($end_date)));
$start_date = date(‘Y-m-01’, strtotime($start_date));
“`
しかし、このコードは特定のケースで問題を引き起こしました。例え

元記事を表示

??null;って何よ。三項演算子も一緒に 備忘録

chatgptさんにいつもの如く質問してたら、回答の一部にこんなのが…
“`
$edit_id = $_POST[“edit_id”] ?? null;
“`
何言ってんだかよくわからなかったので再度chatgptさんに聞き直したら、
「PHP 7.0 で導入された null 合体演算子(null coalescing operator)」
と言われました。簡単に言っちゃば、三項演算子をもっと簡略化したやつ(?)みたい。

## 三項演算子
構文: 条件式 ? trueで出力される値 : falseで出力される値;

例:
“`
echo isset($edit_comment) ? $edit_comment : “”;
“`

## NULL合体演算子
構文: 値1 ?? 値2;
動作: 左側の値が null または未定義であれば、右側の値を返します。左側の値が null でなければ、その値を返す。
例:
“`
$edit_id = $_POST[“edit_id”] ?? null;
“`
That’s all.

元記事を表示

Contact Form 7 で、メールテンプレート上でプルダウンのラベル値を取得する方法

# 結論:`[_raw_{field_name}]` と書く

お問い合わせ種別をContact Form 7で記述すると、以下のような記述になると思います。

“`
[select* type id:type class:form-select include_blank “イベントに関する問い合わせ|event” “IRに関する問い合わせ|ir” “求人に関する問い合わせ|recruit” “ホームページに関する問い合わせ|web” “その他|etc”]
“`

こうすれば、プルダウンの画面上に表示される選択肢では日本語名が表示され、POSTされる値はvalueに入っている英語名を送ることが出来ます。

でも、メールテンプレートでメールタグを使って出力すると、
valueに入っている値のほうが取得されます

“`
お問い合わせ種別: [type]

お問い合わせ種別: ir
“`

こういう場合、`[_raw_{field_name}]`のように書けば、ラベル値のほうを取得できます

“`
お問い合わせ種別: [_raw_type]

お問い合わせ種別: IRに関する

元記事を表示

PHPにおける return;

## return; の役割

* **関数の終了:** 関数の中で`return;`が実行されると、それ以降のコードは実行されずに、関数が終了します。
* **void関数:** 返り値を必要としない関数(void関数)では、`return;`を省略することもできますが、明示的に`return;`を書くことで、関数の終了を明確にすることができます。
* **返り値 NULL:** `return;`は NULL を返します。

## return; と return null; の使い分けと一般的な使用について

### return; の場合
* **返り値はNULL:**
– `return;` と単に記述した場合、PHPは自動的にNULLを返します。
– NULLは、変数が何も値を持っていないことを示す特別な値です。
* **用途:**
– 関数の処理が正常に終了した場合に、特に値を返さずに処理を中断したい場合。
– エラーが発生した場合に、以降の処理を中断し、エラー処理に移りたい場合。

### return null; の場合
* **明示的にNULLを返

元記事を表示

【Laravel】依存性注入(DI)とは

## 依存性注入とは
依存性注入(Dependency Injection、DI)とは、ソフトウェア設計パターンの一つで、クラスがその依存オブジェクトを自分で生成するのではなく、外部から提供される方法。

## 実装例
“`php
public function __construct(
//コンストラクタの引数
//このクラスが動作するために必要な依存オブジェクト。
//Mainというサービスと、Factoryという工場(ファクトリー)クラスを依存として受け取る。
Main $main_service,
Factory $apply_validate_factory
) {
//依存オブジェクトの代入
//コンストラクタで受け取った依存オブジェクトをクラスのプロパティに代入。
//これにより、クラス内の他メソッドでこれらを使用できる。
$this->main_service = $main_service;
$this->apply_validate_factory = $apply_validate_factory;
}
“`

## DIのメリット

元記事を表示

macでphpのバージョンを切り替える

1, Homebrewを最新の状態にアップデートし、アップグレード
“`
brew update
brew upgrade
“`
2, インストール可能なバージョンを確認
“`
brew search php
“`
3, 必要なPHPをインストール
“`
brew install php@8.2
“`
4, 以下で切り替えと反映
“`
echo ‘export PATH=”/usr/local/opt/php@8.2/bin:$PATH”‘ >> ~/.bash_profile
echo ‘export PATH=”/usr/local/opt/php@8.2/sbin:$PATH”‘ >> ~/.bash_profile
source ~/.bash_profile
“`

元記事を表示

【PHP】APIをNew Relicでエンドポイントごとにモニタリング with Docker

# やりたいこと
PHPで書いたAPIのエンドポイント毎のパフォーマンスをNewRelicでざっくり見ていくまでを書きます。
APMを細かく分析していくところまでは書きません。
ホスト端末のCPU状況などは見ません。
無料枠を利用して、Dockerで完結させます。

# 環境
Mac M2

# NewRelicのアカウント作成
こちらから会員登録しておきます。
クレカ情報いらないので色々安心。

https://newrelic.com/jp/sign-up-japan

ログインしたらコンソールに飛ばされるので、LICENSE_KEYを控えておきます。
以下のようにデフォルトでもアカウントが作成されていると思うので、こちらのTypeがINGEST – LICENSEの三点リーダーをクリックしてCopy Keyで取得できます。
![スクリーンショット 2024-08-18 21.17.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/855584/c509142a-9d0c-9d49-b116-15

元記事を表示

PHPStanをインストールして使ってみる

## はじめに

PHPを学習して2か月が経ち、コード量が増えるにつれてエラー原因の特定に時間がかかるようになってきました。そのため、潜在的なバグやエラーを検出できる静的解析ツールを導入することにしました。

## PHPStanとは

PHPStanはPHPの静的解析ツールで、実行ファイルを実行することなくコードを解析し、バグやエラーを検出することができます。

## 導入

公式ドキュメントに従い、Composerを使ってインストールします。PHPStanの実行ファイルはデフォルトで `/vendor/bin` に配置されます。

“`bash
composer require –dev phpstan/phpstan
“`

## 設定ファイルの作成

PHPStanの設定ファイル (`phpstan.neon`) を作成します。`level` には0から9までの数値が設定可能で、数値が大きくなるほど解析が厳しくなります。記事を参考にすると、レベル8や9は厳しすぎると感じる人が多いようです。今回はレベル6を使用します。

`paths` には静的解析の対象となるフォルダを指

元記事を表示

Laravel 学習(ミドルウェア)

## ミドルウェア

下記コマンドを実行し、ミドルウェアを作成します。
“` cmd
php artisan make:middleware HelloMiddleware
“`

下記ファイルが作成されます。
“`\app\Http\Middleware\HelloMiddleware.php

元記事を表示

Laravel 学習(viewおさらい)

## 内容

以前viewについて学習したのですが下記内容がややこしかったのでおさらいです。

– @section・@yeild・@extends
– @component・@slot
– @include
– ビューコンポーザ

## 実行結果

以降に記述しているデフォルトや@section、@componentなどいずれも下図の結果になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604560/a9e8a316-3025-232f-0d8e-c54345e72f16.png)

## 共通処理

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

## デフォルト

継承などせずに、コントローラとビューだけで解決します。

“`php:\app\Http\Controllers\HelloController.php

元記事を表示

【PHPフレームワークFlow】FlowでPSR-15のカスタムミドルウェアを扱う

# 初めに
PHPにおけるリクエストとレスポンスを扱うためのガイドラインであるPSR-15は主にFW内で使われる技術であり、Controller以降を実装する開発者にとって意識する機会は少ないかもしれません。
そんな中、Flowでは独自のミドルウェアを作成し、ミドルウェアチェインの中に組み込む機能を有しています。

今回は、Flowにおけるカスタムミドルウェアの作成方法とその組み込み方について解説します。

# PSR-15とは
PSR-15は、Web APIやWebアプリケーションのリクエストとレスポンス処理を共通化・標準化するためのガイドラインです。

https://www.php-fig.org/psr/psr-15/

詳しくは以下の記事で解説をしたので、ご覧ください。

https://qiita.com/nnhkrnk/items/912fa9ade4352bf1c764

# FlowにおけるPSR-15
前述の通り、FlowではPSR-15のルールに沿ってリクエストとレスポンスを扱う処理を共通化しています。そして、Flowでは開発者が独自に作成したミドルウェアをミドル

元記事を表示

XserverにComposer 2をインストール

See the Pen
Untitled
by John Doe (@04)
on CodePen.