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

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

OpenAI APIをPHPで

– PHP 8.2.12
– “guzzlehttp/guzzle”: “^7.9”

OpenAI APIをPHPにて実装してみます。

HTTPクライアントはguzzleを使用します。Laravelでのシステムにて利用することを想定しています。

APIキーは、**OPENAI_API_KEY**という名前で環境変数に入れてあります。**phpdotenv**を使ってます。

“`bash
$ composer require guzzlehttp/guzzle
$ composer require vlucas/phpdotenv
“`

### 通常パターン

“`php:chatgpt1.php
load(

元記事を表示

JavaとPHPの文法の違い

## はじめに
JavaとPHPは、どちらも広く使われているプログラミング言語ですが、その文法には多くの違いがあります。本記事では、JavaとPHPの基本的な文法の違いを中心に解説します。これから両言語を学ぶ方や、どちらか一方の言語に慣れている方に役立つ内容となっています。

## 1. 変数の宣言と型指定

### Java
Javaでは、変数を宣言する際に必ずデータ型を指定します。これは、Javaが静的型付け言語であるためです。

“`java
int num = 10;
String text = “Hello, World!”;
“`

### PHP
一方、PHPでは変数にデータ型を明示的に指定する必要はありません。PHPは動的型付け言語であり、変数の型は実行時に決定されます。

“`php
$num = 10;
$text = “Hello, World!”;
“`

## 2. クラスとオブジェクトの定義

### Java
Javaは純粋なオブジェクト指向言語であり、すべてのコードはクラスの中に配置されます。以下は、クラスとオブジェクトの基本的な定義です。

`

元記事を表示

What is a PHP Developer?

In internet improvement, a PHP developer plays an essential position. PHP, a popular server-facet scripting language, is the spine of many dynamic websites and web programs. If you have ever wondered what a PHP developer does, what talents are required, and the way to become one, this text is for you.

What is PHP?
PHP (PHP) is an open-source server-aspect scripting language designed commonly for net improvement. It is embedded inside HTML and is used to manage dynamic content, databases, consul

元記事を表示

AstroでPHPを出力する

AstroでWordPressテーマを作成する際に使用した小物類の備忘録。

## PHPタグ出力コンポーネント

slotの中身をエスケープせずに `` の間に展開するだけの単純なもの。

“`tsx:PHP.astro

const php = await Astro.slots.render(‘default’);

`} />
“`

– 参照: [set:html (Astro Docs)](https://docs.astro.build/ja/reference/directives-reference/#sethtml)
– `replace(/\s+/gm, ‘ ‘)` などに通して簡易的にminifyするのもアリ

### 使用方法

PHPタグの代わりに使用する。

“`tsx:index.astro

import PHP from ‘path/to/PHP.astro’;

if($foo):

元記事を表示

自己紹介

# 名前
– はせそん
– 由来は後述
## 経歴
– 最終学歴は専門学校(非IT系)
– 販売業を8年
– 色々あってIT業界へ
– 今に至る
## 何者なのか
– アラサー
– 性別非公開(ご想像におまかせします)
## 趣味
– 競プロ
– AtcoderとPaizaの二拠点
– Pythonで挑んでます
– C++はわけわかんなかった…
– ちなみに学生時代1番苦手な科目は数学でした
– 西武ライオンズの応援
– 推しは長谷川信哉選手(愛称ハセシン)
– 偶然見てた試合で超ファインプレー
「推すぞ!!」と決意し今に至る
– 近くで見た時に「こんなかっこよくて野球上手いとかすげぇな」としみじみ思った
– 走攻守三拍子揃ってる+華がある
– 名前のはせはこの方から来てます
– 現地が遠いので主にDAZNで見てます
– トレーニング
– 前職で腰を痛めがちになったので軽い筋トレをするのが日課です
– 最近筋膜ローラーを買ったよ
– 部屋の置物と化す前に使おう
## 使

元記事を表示

Laravel11を使うためにWLS2のPHPのバージョンを8.2に上げる方法

ローカル環境でLaravelを構築しようとしたときに、PHPのバージョンが低く、Laravel8系が入ってしまった。
使いたいのはLaravel11系なのでそれに合わせてPHP8.2を入れる備忘録になります。

※備忘録なので細かいかもしれません
※間違いがあったらコメント頂けると助かります

## 環境と目的
– WSL2(ubuntu)
– PHP7系からPHP8系に上げる

## 経緯: composer create-projectをしてみたら・・・
ローカル環境で
“`
composer create-project laravel/laravel hoge-app
“`
としてLaravelを構築しようとしたときに、
> Cannot use laravel/laravel’s latest version v11.1.4 as it requires php ^8.2 which is not satisfied by your platform.

というメッセージが表示され、
“`
Installing laravel/laravel (v8.6.12)

元記事を表示

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

# はじめに

プログラミングでよくあるタスクの一つに、生年月日から年齢を計算することがあります。今回は、各プログラミング言語でこのタスクを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`オブジェクトを利用して、生年月日と現在の日付の差をミリ秒で計算し、年数に換算しています。

===
ミリ秒意識しない記載方法は以下(推奨)
“`ja

元記事を表示

#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.