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

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

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

元記事を表示

KUSANAGI for WordPress認定試験

KUSANAGI for WordPress認定試験

公式URLより引用しております。

  • 問題数 40問
  • 出題形式 選択式
  • 試験方式 コンピューター上で実施するCBT(Computer Based Testing)方式
  • 試験時間 60分
  • 合格基準 7割正解
  • 受験料 一般価格:11,000円(税込) / 学割価格: 5,500円(税込)
  • 出題範囲
    「詳解WordPress」を主教材とし、一般的な知識やKUSANAGI公式サイトおよび関連サービスなどからも出題します。

▽詳細は下記のURLから確認
https://cbt.odyssey-com.co.jp/kusanagi/kusanagi.html

元記事を表示

カスタム投稿タイプとタクソノミーを使った絞り込み検索機能を作りたい

https://qiita.com/advent-calendar/2023/cms

この記事は[CMS(WordPressやヘッドレスCMS) Advent Calendar 2023](https://qiita.com/advent-calendar/2023/cms)の15日目の記事です。
空きがあったので参加させていただきました。

## はじめに
あまたある`WordPress`のプラグインの中でも`Custom Post Type UI`は超有名ですよね。最近`WordPress`については運用・保守作業ばかりで、サイト制作は全然なのですが制作時はよくお世話になりました。

数年前の話になりますが、新規`WordPress`サイトの制作でクライアント(社内グループ各社)の要望に検索機能がありました。しかし予算の都合上、有料プラグインは使用できなそうだったので自作することになったのです。

今回、その時に制作した「カスタム投稿タイプとタクソノミー」を用いた検索機能について書いていこうと思います。

:::note alert
筆者が自ら集めた情報をつなぎ合わせる形で自作し

元記事を表示

いまさらだけど、XAMPPで複数バージョンを一つのPCで切り替えて使う

# XAMPPって

XAMPPは、最も人気のあるPHPの開発環境です。
Apache + MariaDB + PHP + Perl がインストールできます。
Windows版、Mac版、Linux版があります。ここでは、Windows版を使って環境を作ります。

公式サイトは、[こちら](https://www.apachefriends.org/jp/index.html)

# いまさら?
すでに四半世紀を超えた経験の中で、PHPはほぼ初めて(むかーしソースを呼んだ程度)です。
これから関わるプロジェクトで、PHPを使っているということだったので、環境を作ろうと思った次第です。

ただ、複数の製品を提供していて、PHPのバージョンも異なるようなので、どうやったらきれいな環境を作れるかなーと思って、環境を作ってみました。

# 手順

## XAMPPをダウンロード

①公式ページのこちらのリンクを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/132118/10db6756-f

元記事を表示

CSVアップロード機能を作るためのメモ

## はじめに
※マジでメモです、すいません。※
この一年でCSVアップロード機能を作る機会が何回かありまして、その度に作り方を思い出す作業をしていたので自分用にメモを残します。

## 必要なもの
1. CSVファイルを受け取るフォーム
1. 拡張子などファイルの形式チェック機能
1. CSVファイルをローカルに保存する処理
1. バリデーション機能
1. DBに保存できる形に変換する処理
1. DB保存処理

## 1. CSVファイルを受け取るフォーム(View)
Formタグにenctype="multipart/form-data">を追加する
“`php

“`

## 2. 拡張子などファイルの形式チェック機能(Controller)
※拡張子が“`csv“`であるかチェック

“`php
public function uploadCsv(Req

元記事を表示

unset()で複数引数持てる

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

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

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

## 結論
unset()で配列の要素を削除する場合、引数を複数持たせて記述を短くしましょう!

## 解説
ループ処理内でunset()を利用する際に、短く記述できる方法を紹介します。

### unset()複数回記述する
こんな感じで、削除する要素の数だけ、unset()を実行してました…

“`php
$array = [‘りんご’, ‘バナナ’, ‘いちご’, ];

unset($array[0]);
unset($array[2]);

print_r($array);

// 出力
Array
(
[1] => バナナ
)
“`

### unset()に複数引数を記述
unset()に複数引数を持たせることが可能です。

“`php
$array = [‘りんご’

元記事を表示

IBMi V7R5 でPHP iToolkit ⇔ QXMLSERV 文字化け?

IBMi OS V7R5 にバージョンアップして以来、PHP iToolkit のコマンドが(例えば **DSPLIBL** )文字化けする。
原因を調査しても、一向に分からず、IBMサポートの方と3ヶ月ほどやりとりしたが、全然解決しない。

## 解決
結論から言うと、原因は分からないが、TR3が利用したくて最新のPTFを当てたら文字化けしなくなった。

IBMさん側では、「解決となる様な修正はないとのこと」。釈然としないが、同じことに遭遇してしまう、運の悪い方もいるかも知れないので、現象だけ記録に残しておく。

## PHP iToolkit って

-[zendtech/IbmiToolkit](https://github.com/zendtech/IbmiToolkit)
そもそも、「**PHP iToolkit**」 って何?って事ですが、PHPでXMLの入出力を介して、プログラム連携やコマンド連携を簡単に出来る便利なライブラリ。もちろんの [**CS^2**](https://www.cscweb.jp/solution/cscs/) にもバンドルされており、新しいバージ

元記事を表示

ダンプをとるよ、”VarDumper”

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

## ダンプをとるよ、”VarDumper”

[VarDumper](https://symfony.com/doc/current/components/var_dumper.html)は、デバッグ用にダンプを出力するコンポーネントです。Symfony以外でも使えます。

### インストール

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

### 使い方

Symfonyユーザにはお馴染みの`dump()`が使えるようになります。

“`php

$item = new Item(‘商品名’);
dump($item);
/**
Item {
-name: “商品名”
}
*/

echo dump($item)->getName(); // dumpは引数を返すので、そのままメソッド

元記事を表示

phpenvでphpをインストールする際のコマンドメモ

anyenv経由でphpenvを導入後、phpバージョン8.2.9 `phpenv install 8.2.9` が導入できず苦労したのでここに残します。

# 環境
– Mac M2
– Sonoma 14
– shell: bash

実行してその度に足りないパッケージを追加していったところ以下のコマンドになりました。パッケージはすべてbrew経由で導入しています。

# コマンド
“`
PHP_BUILD_CONFIGURE_OPTS=”–with-zlib-dir=$(brew –prefix zlib)\
–with-bz2=$(brew –prefix bzip2)\
–with-curl=$(brew –prefix curl)\
–with-iconv=$(brew –prefix libiconv)\
–with-libedit=$(brew –prefix libedit)\
–with–ssl=$(brew –prefix openssl@1.1)\
–with-tidy=$(brew –prefix tidy-html5)”\
p

元記事を表示

【PHP / Laravel】現在のパスワードと一致するか確認するバリデーション

株式会社やどかりの平山です。
パスワード変更画面での実装について書かせていただきます。

〜やりたいこと〜
【現在のパスワード】が正しいものか検証し、
正しくなければバリデーションメッセージを表示したい

![552c3a971ec10167a0b72e35b2eace93.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3657995/f18718e5-54fc-e5f3-a4a3-5bac9d215325.png)

①ターミナルに下記を入力

“`php:ターミナル
php artisan make::rule CurrentPasswordRule
“`

② ①で作成したCurrentPasswordRule.phpに必要事項を記述
(パスワードはセキュリティのためHash化しています)
“`php:CurrentPasswordRule.php

元記事を表示

OTHERカテゴリの最新記事