An open API service indexing awesome lists of open source software.

https://github.com/umanari145/phptips

PHPに関わる小ネタ
https://github.com/umanari145/phptips

jwt monolog oauth php phpexcel redis sendgrid trait

Last synced: 4 months ago
JSON representation

PHPに関わる小ネタ

Awesome Lists containing this project

README

          

# phptips

PHP に関わる小ネタ
\*\* laravel の dd を採用("larapack/dd")

- Anonymous

- call_user_func_array.php call_user_func_array を使ったリフレクション
- call_user_func.php call_user_func を使ったリフレクション
- clouser.php array_walk を使ったサンプル
- clouser2.php 無名関数、array_map、array_filter、array_column を使ったサンプル
- clouser3.php array_reduce を使ったサンプル

- arrconvert

- make_hash.php プルダウン系のデータを配列の PHP コードにする
- hash_data.txt サンプルデータ

- cached

- cached.php 静的キャッシュの使い方
- redis.php redis を使ったキャッシュ

- CICD

- index.php エントリーポイントのファイル
- composer.json composer.json
- buildspec.yaml CICD 時の起動ただし、場所自体はルートディレクトリに

- class

- SampleClass.php クラス変数とインスタンス変数の使い分け
- SampleClass2.php マジックメソッド\_\_call の使い方

- closure

- array_convert.php clouser を使った array_map の自作

- collection

- sample.php illuminate/collections をつかったサンプル

- csv

- dummy.php CSV のインポート&エクスポート
- load.csv CSV の読み込みとハッシュ化

- date/date.php dateTime を使った日付の処理全般
- date/Carbon.php Carbon を使った日付の処理/Immutable についても

- di Di のサンプル

- type1
- Dog.php メソッドインジェクション、セッタインジェクション、コンストラクタインジェクション
- BuyFacade.php DI を使わないサンプル(内部でクラスの作成)
- BuyFacadeDI.php DI を使ったサンプル(create での結合をする)
- type2
- DogIncIF.php IF(interface)ありの Dog クラス
- CatIncIF.php IF(interface)ありの Cat クラス
- PetInterface DogIncIF と CatIncIF のインターフェイス
- Animal.php 注入される側(DI が使われてる側。ただし DI コンテナは使わない) 欠点としては具体的なクラスを記述する必要がある
- AnimalUseDIContair.php 注入される側(DI コンテナ:Pimple 使用 ) 利点としては IF 以下のクラスが見えなくても大丈夫(require_once は覗く)
- type3 DI コンテナをテスト用と本番用で手動で分ける(DI が一番効果を発揮する場面)
- SendMailIF.php sendmail 用のインターフェイス
- SendMail.php sendmail プログラム(クラスがここで入っていないので依存性がない)
- container.php DI コンテナ
- ProdSendMail.php 本番用の sendmail プログラム
- TestSendMail.php 開発用の sendmail プログラム

- error エラーハンドリング

- errorCatch.php エラーハンドリングの具体例
- exception.php 例外キャッチに関して
- SentrySample.php エラーリポーティング(`https://sentry.io/settings/`で SENTRY_URL を取得)
- CustomException.php 独自の Exception
- MemberController.php Service の Exception のキャッチ
- MemberService.php 様々な例外のパターンを記述

- encoding 文字コードがらみ

- mb_convert_encoding.php mb_convert_encoding の検出に関して
- cp932_text.txt cp932 で保存したファイル
- utf8_text.txt utf8 で保存したファイル

- factory Factory パターンについてのサンプルコード

- 参考 https://liginc.co.jp/web/programming/php/149051
- AnimalController factory の呼び出し
- AnimalFactory 実際の具体生成箇所(正しく factory)
- Cat.php 具象クラス
- Dog.php 具象クラス
- Pet.php IF(Cat、Dog の上位)

- filepointer ファイルポインタに関して

- file_pointer.php ファイルポインタの検出に関して
- sample_text.txt サンプルテキスト

- import インポート系のスクリプト(CSV→DB など)に関して
- make_update_sql.php update 文作成
```
ex.
php make_update_sql.php -i"入力ファイル名" -o"出力ファイル名" -k"updateのkey" -t"テーブル名"
```
- make_insert_sql.php insert 文作成
```
ex.
php make_insert_sql.php -i"入力ファイル名" -o"出力ファイル名" -t"テーブル名"
```
- sample.csv サンプル CSV
- invoke

- SampleClass.php invoke を内蔵したプログラム
- yobidashi.php 呼び出し側のプログラム

- jwt JWT 認証のサンプル (uml/jwt.pu jwt のシーケンス図)

- login.php ログインの際に POST するプログラム

```
curl -X POST http://localhost:8080/jwt/login.php \
-H "Content-Type: application/json" \
-d '{"username": "sampleUser", "password": "samplePass"}'

#tokenの発行
{"token":"xxxxxxxx"}
```

- data.php token を受け取り、実際にデータを返す部分

```
curl -X GET http://localhost:8080/jwt/data.php \
-H "Content-Type: application/json" \
-H "Authorization: Bearer XXXXX(token文字列)"

# user情報が出力されていればOK
{"username":"sampleUser"}

#こけたら下記のように出力される
"Signature verification failed"
```

- logdir ログに関するテスト

- monolog.php モノログのサンプル 参考 https://gist.github.com/megatk/b7b7d9add34592d104a6 https://kzhishu.hatenablog.jp/entry/2015/10/04/200000
- Log.php monolog のラッパークラス
- logCallSample.php ログを呼び出すサンプル

- last_static_binding 静的遅延束縛(self と static)による違いなど

- ParentClass.php 親クラス
- ChildClass.php 子クラス
- start.php 実際のクラスを呼び出す場所

- mail メールのサンプル
- sampleSendMail.php(phptips_php7 コンテナの中に入って動かす)
- http://localhost:8025/ で GUI ツールにアクセス可能(実際にメールは送信されないでこのツールで仮想的に確認できる)
- mailhog.png は mailhog のスクショ
- memory_management メモリ管理(メモリ節約のパターン) 参考 URL https://code-boxx.com/php-memory-management/
- unset_pattern.php unset のパターン
- phpExcel PhpSpreadsheet を使ったサンプル

- PHPExcel PHP から Excel の読み書きを行うことができる

- namespace namespace を使ったサンプル
- oauth googleoauth を使った認証ロジック(uml/googleAuth.push 参照)

- cache テンプレートキャッシュディレクトリ
- template  テンプレート(blade を単独で使用)
- login.blade.php ログインのテンプレート
- public
- login.js login 時の JS の実装
- index.php エントリーポイント(ログイン画面)
- config.json google アカウントなどの情報(clientID などの情報)
- config.json.sample テンプレート
- home.php ログイン後の画面
- loginCheck.php token の照合
- logOut.php ログアウト時の処理
- 参照リンク
- https://qiita.com/biy0ganba/items/6c3a886759254e0e942c フロント側の実装
- https://blog.4breaker.com/2020/06/03/post-1162/ フロント側の実装
- https://developers.google.com/my-business/content/implement-oauth?hl=ja google 公式
- https://console.developers.google.com/apis/credentials 認証情報の google 画面
- https://qiita.com/kmtym1998/items/768212fe92dbaa384c27 サーバーサイド側の実装
- https://code.tutsplus.com/tutorials/create-a-google-login-page-in-php--cms-33214 サーバサイド側の実装

- pdflib pdf の活用

- pdfgenerateor.php fpdf を使ったサンプル
- pdfgenerateor2.php tcpdf を使ったサンプル

- php

- tips PHP8 のネタ(名前付き引数、オブジェクトのプロモーション、null オペレーター)
- operator 演算子について(三項演算子、エルビス演算子、null 演算子) https://www.asobou.co.jp/blog/web/php-operator

- redis redis のサンプル

- redisSample.php Redis のサンブル  Redis コマンド自体は redis コンテナの中でみる
- http://localhost:8001/ で GUI ツールにアクセス可能
- redisinsigt.png は接続時の情報

- reflection 動的クラスの作成

- Animal.php 親クラス
- Cat.php 子クラス 1
- Dog.php 子クラス 2
- ClassLoader.php autoload の作成
- reflection.php 実際の動的クラスの呼び出し

- request

- curl.php curl コマンドでの POST
- file*get_contents*.php file_get_contents を使った POST
- #他に guzzle など HTTP クライアントを使った方がいいかも。。。

- routing

- Controller  コントーラー群
- Service  サービス群
- Model  モデル群
- .htaccess htaccess(主にファイルがなかった時に index を向かせる記述)
- index.php 実際のルーティングの記述

- sendgrid

- sendgrid を使ったメールサンプル

- scraping
- scraping paquettg/php-html-parser による PHP スクレイピング

```
http://localhost:8080/routing/sampleAction→Controller/TopControllerのsampleActionにアクセス
参照リンク
https://www.codit.work/notes/30lgs07yv3ycwjpz6p8y/
```

- trait trait の活用(外部実装)

- samplClass.php trait を受ける側の通常の野良クラス
- sampleProgram.php sampleClass を呼び出して実行するクラス
- sameplTrait.php Trait を実行するクラス

- underbar

- scripts/summary.php underbar.php を使ったサンプル

- util

- makeModel.php getter-setter を記載するプログラム

- validation
- laravel の validation ライブラリ