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

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

ミューテータとappend()

## はじめに
私は株式会社qnoteにて、勉強会の幹事を務めております。
2023年度勉強会の珠玉のネタを2023Qiitaアドベントカレンダーに投稿していこうと思います。

## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者

## 結論
ミューテータは便利なので使いましょう!
ただし、記述箇所は慎重に検討しましょう。

## ミューテータの定義はモデルで

https://www.yoheim.net/blog.php?q=20181105

“`php

元記事を表示

【Laravel】ヘルパー関数data_getの第二引数がnullの場合の挙動

## はじめに
Laravelで提供されているヘルパー関数data_getの第二引数がnullだった場合の挙動が意図しないものだったので、結果と実際どのような処理が行われているかを理解するために記事をまとめます。

## 実証環境
PHP 7.4
Laravel 6.2

## 引数による結果の違い
第二引数によって、以下ような結果になります。
“`php
$characters = [
‘player’ => [‘cuphead’, ‘mugman’],
‘boss’ => [‘The Root Pack’, ‘Goopy Le Grande’, ‘Ribby and Croaks’]
];
dump(data_get($characters, ‘player’, ‘第二引数のキーなし’));
// array:2 [▼
// 0 => “cuphead”
// 1 => “mugman”
// ]
dump(data_get($characters, ‘mob’, ‘第二引数のキーなし’));
// “第二引数のキーなし”
dump(data_get($c

元記事を表示

プロパティへ強制アクセス、”PropertyAccess”

[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の24日目の記事です。

## プロパティへ強制アクセス、”PropertyAccess”

[PropertyAccess](https://symfony.com/doc/current/components/property_access.html)は、オブジェクトや配列のプロパティにアクセスするためのコンポーネントです。Symfony以外でも使えます。

### インストール

“`shell
composer require symfony/property-access
“`

### 使い方

#### Get
“`php
use Symfony\Component\PropertyAccess\PropertyAccess;

$propertyAccessor = PropertyAccess::createPropertyAccessor();

$array =

元記事を表示

BEAR.Sundayはロマンチックではなくセマンティック

bear sunday

2023年12月24日、今日はクリスマスイブ🎅🎄⭐です。

今年のクリスマスイブは日曜日、ホリデー、(BEAR)”Sunday”です!一年で一番ロマンチックなこの季節、皆さんも素敵でロマンチックな一日をお過ごしでしょうか。

しかし、この記事ではBEAR.Sundayはロマンチックでなく、セマンティックというお話をします。

## Semver

BEAR.Sunday 1.0のリリースは2014年。来年で10年を迎えます。

この1.0のリリースの時に、強い思いで決めていたことがありました。それは破壊的変更(Breaking Change)を行わないということです。

[セマンティック バージョニング](https://semver.org/lang/ja/) に従えば、破壊的変更が取り込ま

元記事を表示

PHP8_2_12 xampp phpも使える様にして置く。

xampp 言うのはlocalhost(サーバーserverではない。外部に送らない。)に組み込まれている、phpの今2023/12の新しい部類のphpです。
phpが何かは説明しなくていいと思うが、一応、言うと、html内に、プログラムを記述して臨機応変に文を変えて、ユーザーの要望に沿う形で出力してあげて、分かりやすいページ構成にしてやる。のだから、余り、複雑な質問を出さない様に組む事を心がけましょう。なんかずれたな。
という事で、あるのだから、使える様にだけはしておこう。
何もしなくて動いているが、世界一般に通じる程度の「設定」になってるだけで、日本仕様には、なっていないって話。
そこで、おらは、日本サービス員だってさせたい人は「設定」をしなければならない。
難しい話の前に「どの様な仕様で」を出してみよう。
ちょっと古いが古phpもひょうじできるやろって。
“`php





MAMPを使ってPHPを表示させる

## MAMP
– ローカルにWeb開発環境を作ることができるソフトウェア
– Web開発に必要なLAMP環境が揃っている

## 実現したいこと
– MAMPを使ってPHPが実行できる環境を構築する
– ブラウザで`Hello World`と出力する

## 前提
– MAMPは初期設定のまま
– 使用PCはMac

## 手順
1\. [公式HP](https://www.mamp.info/en/downloads/ “MAMP”)からMAMPをインストール

2\. MAMPアプリケーションを開く

 

3\. アプリケーション内にあるMAMPを開く

 

4\. 右上の「Start」ボタンを押してMAMPを起動する

Laravel:マイグレーションとシーディング

## マイグレーションとは
マイグレーションはデータベースのバージョン管理のようなもの。
マイグレーションを使用してデータベースの変更を行うことにより、データベースの構造変更やデータの追加、変更、削除などの機能を持っており、PHPのスクリプトを使ってテーブルの作成処理などを用意している。

### マイグレーションの手順
1. **専用のスクリプトファイルの作成**
 コマンドを使いマイグレーションを記録するためのスクリプトファイルを作成する。
2. **スクリプトの記述**
 スクリプトファイルに、データベース管理の処理を記述する。
3. **マイグレーションの実行**
 マイグレーションを行う場合は、コマンドで実行する。コマンドにより、用意されたマイグレーション用のスクリプトファイルを実行してテーブルの生成や削除などが行える。

### マイグレーションファイルの生成
マイグレーションファイル作成は以下のコマンドを実行する。

`php artisan make:migration ファイル名`
指定んほテーブルを作成するためのマイグレーションファイルが作られる。

エンジニア-1年生がUdemy講座でWebアプリを作成できるようになった話

## はじめに
はじめましてんぐ。(特に意味のない現在進行形)
強強エンジニアを目指す大学3年生です。

私は最近色んなことに手を挑戦しているのですが、
今回は私が受けてよかったなと感じるUdemy講座について紹介します。

https://www.udemy.com/course/php7basic/

結論から述べると、上のリンクの
「**ちゃんと学ぶ、PHP+MySQL(MariaDB)入門講座**」
です。

PHP未経験の私にとってすごく分かりやすい講座でした。

**PHPを勉強してみたい人、何かしらWebアプリを作ってみたい人にはとてもオススメです!**

受講する前〜受講後の私の状況と、おすすめポイントを以下で述べたいと思います。

## 受講前の私
参考になるように、
受講前にできたこと、できなかったこと、この講座に期待していたことを述べます。

ざっくりいうと、
私は情報学部生である程度のプログラミングはできたので、

「**Web アプリの作り方を理解しながら PHP を使ってアプリ制作をしたいなあ**」

と思っていました。

### できること
– Pyth

元記事を表示

リポジトリパターンで、データの要求変更に強い設計パターンを実装

## はじめに
リポジトリパターンとは、ビジネスロジックからデータの保存や復元を別レイヤへ分離することで、コードのメンテナンス性やテストの容易性を高める実装パターンです。
本記事では、Laravelを使って、リポジトリパターンを実装します。

## リポジトリパターンとは
アプリケーションにおいて、データの保存先はさまざまです。RDBやNoSQL、SaasのAPIを利用するケースもあります。また、テストコードで本番と違うデータベースを使用することもあります。
そのとき、データのストア先が変わってもプログラムの変更範囲をできる限り小さくしたいです。

その手段の一つとして、リポジトリパターンがあります。

![スクリーンショット 2023-12-23 17.09.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1650886/0f09c67f-f64d-df07-1a35-8ba0fe33ee7f.png)

リポジトリパターンはビジネスロジックからデータストアに対して直接操作する処理を切り離します。

元記事を表示

Scaffoldがキモ可愛い「Livewire」をPHP 8.1.26+Laravel 10.38.2で試してみた(ややモッサリ)

この記事は、[PHP Advent Calendar 2023 シリーズ1](https://qiita.com/advent-calendar/2023/python) の22日目です

昨日は、 @papillon さんで [「捕まえたWebシェルを調べてみる」](https://qiita.com/papillon/items/0ce9e940b4942e9f9747) でした

【本コラムは、20分で読めます】

[piacere](https://twitter.com/piacere_ex) です、ご覧いただいてありがとございます :bow:

普段は、[Elixir/Phoenix/LiveView](https://qiita.com/advent-calendar/2023/elixir)メインで開発してますが、PHP開発は2000年頃から続けていて、年1~2本くらい既存システムのバージョンアップ案件やアセスメントをこなしていたりと、何かと触ってはいますが、PHPの新し目のWeb技術はあまり触れていません

そこで、前々から何となくは知ってたものの、ちゃんと

元記事を表示

Laravelで全文検索エンジンのalgoliaを使ってみた

[インフォ・ラウンジ Advent Calendar 2023](https://qiita.com/advent-calendar/2023/info-lounge) の23日目です。

## はじめに
普段はElasticSearchやAWSのOpenSearch Serviceを使っているのですが、社内でalgoliaの話を聞いたのでどんなもんかと思い使ってみることにしました。

とりあえず感触を掴みたいだけなので、慣れているPHP/Laravelでやってみることにします。

## Laravelのセットアップ
“`bash
composer global require laravel/installer
laravel new algolia

# とりあえずSQLiteを選んでおきます
┌ Which database will your application use? ───────────────────┐
│ SQLite │
└──────────────

元記事を表示

PHP sprintf()

## はじめに
sprintf()のまとめです。文字数や桁数の指定が可能です。
自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。

## 整数で使ってみる
さっそく使ってみます。指定するものが文字列か数字によって変わります。
整数でやってみます。
“`php
$num = 500;

$newNum = sprintf(‘[%5d]’, $num); //整数は%d,5は5桁出力

echo $newNum;
“`
“`php
[ 500]
“`
ちなみに[]は必要ありません、あったほうがわかりやすいですよね。
空白を0で埋めたいなら以下のように桁数の前に0をつけます。

“`php
$num = 500;

$newNum = sprintf(‘[%05d]’, $num); //整数は%d,5は5桁出力

echo $newNum;
“`
“`php
[00500]
“`
また、左詰で出力したいなら先頭に-をつけます。
“`php
$num = 500;

$newNum = sprint

元記事を表示

PHP 配列

## はじめに
配列です。たくさんの値が入ったやつ。
自分用のまとめなので間違いや自分が完全に理解しているところに関しては省略して書いていることもあります。ご了承お願いします。

:::note warn
コード書いていて気づいたのでが、配列はechoで出力できません。
print_rを使うと出力できます。
:::
見返した時見落としそうなので目立つように記載しておきます。

## 配列の定義
配列名 = [値1, 値2, 値3];
“`php
$scores = [10, 20, 30, 40];
“`
以下のような書き方もできます。
“`php
$scores = [
10,
20,
30,
40,
];
“`

## 値の変更
配列の値の変更を行えます。1番目が0です。
“`php
$score[0] = 100;

print_r($score);
“`
“`
[0] => 100
[1] => 20
[2] => 30
[3] => 40
“`

## 値に対してキーを指定する
配列名 = [‘キ

元記事を表示

Vonage Messaging APIを使ってFacebook Messengerにテキストメッセージを送信してみる

# はじめに
[【Vonage】コミュニケーションAPIを使ってみよう、Vonageのことなら何でも共有しよう! by Vonage Advent Calendar 2023]()の23日目です :santa:

この機会に初めてVonageAPIを使ってみました。その時の様子をお伝えします :v:

# 概要
– [準備](#準備)
– [アカウント登録(無料)](#アカウント登録無料)
– [APIKey,APIシークレットの取得](#apikeyapiシークレットの取得)
– [FB_RECIPIENT_IDの取得](#fb_recipient_idの取得)
– [まずcurlで試してみる](#まずcurlで試してみる)
– [PHPで実装していくー!](#phpで実装していくー)

## 準備
### アカウント登録(無料)

[テストクレジット€ 2いただきました :gift: ](https://qiita.com/advent-calendar/2023/vonage#:~:text=Video%20API%20%E4%BB%A5%

元記事を表示

collectionのwhen()

## はじめに
私は株式会社qnoteにて、勉強会の幹事を務めております。
2023年度勉強会の珠玉のネタを2023Qiitaアドベントカレンダーに投稿していこうと思います。

## 対象者
この記事は下記のような人を対象にしています。

– 駆け出しエンジニア
– プログラミング初学者

## 結論
collectionにもwhen()が使える!

## やりたいこと
append()でCollectionに’huga_huga’を追加したいが、フラグON/OFFで追加する/しないを切り替えたい。

## 失敗した方法(間違ったwhen()の使い方)
“`php
// これだと動かない(append()はコレクションのヘルパー関数なので、get()より後に記述しないといけない)
$flag = true;
Hoge::when($flag, function ($q) {
return $q->append(‘huga_huga’);
})->get();
“`

## Collectionにもwhen()があった!

https://laravel.com/docs/10.x

元記事を表示

PHPの例外入門!

## はじめに

PHPやLaravelを使って開発をしていると、例外処理という言葉をよく耳にします。
前半は例外処理について、初学者を対象に解説していきます。(PHPにはこういう機構があるよといった入門的な部分)
後半はPHP,Laravelの例外の概要と、筆者の考える実践パターンをいくつか紹介します。

## 対象読者

– ジュニアエンジニアで、PHP/Laravelを使った開発を始めたばかりの人
– PHP以外の言語経験があり、PHPにおける例外処理の仕組みを知りたい人
– WEB業界に入ったばかりの駆け出しエンジニアで、エラーハンドリング?なにそれおいしいの?状態だった過去の自分

## 例外処理とは

まずは知らないIT用語を調べるときに大変お世話になるサイトから見てみましょう

参考: [わわわIT用語辞典](https://wa3.i-3-i.info/word1427.html)

>例外処理(読:レイガイショリ 英:exception handling)とは
>(想定内の)エラーが起きたときにやる処理のこと
>です。

エラーには種類がありま

元記事を表示

IBMiのWeb開発では円マークに気をつけよう

IBMi の Web 開発しているときの **¥(円マーク)** と **\(バックスラッシュ)** について気をつけましょうって話。

## 何を気をつけるのか?

Web開発をしている際の話。(※JISキーボード前提で)
WindowsのWebブラウザで、フォーム入力時に、キーボード右上段の `¥(円マーク)` を入力した際に、UNICODE( *※以下 UTF-16 の 0x 形式で表記* )の **円マーク(0x00A5)** となり、右下段の `\(バックスラッシュ)` を入力した際には、UNICODEの **バックスラッシュ(0x005C)** になれば良いのだけど、実際はそうはならない。
実際にはどっちも UNICODEの **バックスラッシュ(0x005C)** となる。

これは、自分も知らないような、昔々のお話 ASCII コードを 1bit 拡張して、半角カナを割り当てたり、バックスラッシュに見た目だけ円マークを割り当てたりの負の遺産によるモノ。

海外の友人と文字コード関連の会話する時は、まぁー常に伝わらない部分で「酷いSBCSを使っている(カタカナを含めてそ

元記事を表示

ダンプをPHPで返すよ、”VarExporter”

[Symfony Component Advent Calendar 2023](https://qiita.com/advent-calendar/2023/symfony-component)の23日目の記事です。

## ダンプをPHPで返すよ、”VarExporter”

[VarExporter](https://symfony.com/doc/current/components/var_exporter.html)は、渡されたデータをダンプしますが、返す値はPHPコードになります。

### インストール

“`shell
composer require symfony/var-exporter –dev
“`

### 使い方

“`php
use Symfony\Component\VarExporter\VarExporter;

$result = VarExporter::export([‘a’ => ‘b’, ‘c’ => 123]);
echo $result;
/*
[
‘a’ => ‘b’,
‘c’ => 123,
]
*/

元記事を表示

PHPでスクレイピングしてみる(Simple HTML DOM Parser 使用)

PHP のスクレイピングで楽に使えそうなライブラリ PHP Simple HTML DOM Parser を使ったときのメモ
PHP Simple HTML DOM Parser だと CSSセレクタで要素指定できるのがありがたい
ライブラリなくてもスクレイピング出来そうだったけどPHPも初心者だったからか xpath が使いづらかった...

PHP Simple HTML DOM Parser の公式のドキュメント?、ライブラリとかのリンク先
– ドキュメント [Simple HTML DOM documentation](https://simplehtmldom.sourceforge.io/)
– ライブラリ取得 [SourceForge – PHP Simple HTML DOM Parser](https://sourceforge.net/projects/simplehtmldom/)

実施した環境はこんな感じ
– Windows11
– XAMPP Windows 7.4.27
– PHP Simple HTML DOM Parser v1.9.1

# ライブラ

元記事を表示

ConoHaVPSにDocker(PHP、MySQL、Python、Node.js、phpMyAdmin)を構築

ConoHaVPSにDocker(PHP、MySQL、Python、Node.js、phpMyAdmin)を構築する手順についての覚え書き
## Dockerのインストール
ConoHaVPSのアプリケーションインストールでDockerをインストール

パッケージのアップデート
“`
sudo apt update; sudo apt upgrade
“`
Dockerが正しくインストールされたか確認します
“`
sudo systemctl status docker
“`
## ユーザーアカウントの追加
ユーザーの追加(オプション)
“`
adduser username
“`
ユーザーにsudo権限を割り当てる場合(任意)
“`
usermod -aG sudo username
“`
ログインできるか確認
“`
login
“`
ユーザーIDとパスワードを入力

rootアカウントに戻る
“`
su –
“`
sudo グループの確認
“`
groups 【ユーザーID】
“`
sudo コマンドの確認
次のコマンドを使用して、追加したユーザーが s

元記事を表示

OTHERカテゴリの最新記事