- 1. phpunitでprivateメソッドのテストを簡単に記述する
- 2. PHPUnitでプライベートメソッドのテストを行う方法
- 3. PHPマニュアル完全解読 ※しばらく更新
- 4. web proxyを構築したら凄い勢いで草が生えた話
- 5. laravelミドルウェアについて[メモ]
- 6. 【MySQL】データベースからデータの取得 クエリ(query)
- 7. 【MySQL】PHP $_POSTの値をデータベースに挿入する
- 8. Laravel PHP 送信されたファイルの拡張子をMIMEの情報から取得する
- 9. LaravelでSwaggerを自動生成する
- 10. Uncaught Error: Call to undefined method PhpCsFixer\Config::create()
- 11. spotify x LINEで音楽をタイマー替わりにするLINEBOT作った
- 12. SQLインジェクションが話題になってるけど
- 13. UTCタイムスタンプ(UNIX時間)をJSTに変換して表示するワンライナー
- 14. 日付関連のテストを書く時は絶対にスタブ化しろ
- 15. laravel8 authインストール(メモ)
- 16. 「WP-PostViews」プラグインでタグを人気順(閲覧数順)に表示する方法
- 17. Apache2 + phpのサイトでEUC-JPのHTMLが文字化けする
- 18. PHP Laravel アクセス修飾子のルールを一旦整理する
- 19. [php初学者]型宣言とかnull系について
- 20. PHP:Laravel Strageを利用した複数画像uploadする方法1つとFlysystem-aws-s3で複数画像をuploadする方法2つとその処理速度
phpunitでprivateメソッドのテストを簡単に記述する
## 結論
`ReflectionWrapper` クラスを通すことで,可視性を気にすることなくメソッド/プロパティへアクセスできる.
“`php
$testClass = new ReflectionWrapper(
// テスト対象クラスのインスタンスを渡す
new TestClass()
);// private/protected なメソッドがそのまま呼び出せる
$testClass->doPrivate();// private/protected なプロパティへもアクセス可能
$testClass->privateProperty = ‘private’;
“``ReflectionWrapper` のコードはこちら
[https://github.com/ueba1110/utilities/tree/master/php/tests](https://github.com/ueba1110/utilities/tree/master/php/tests)
## 解説
### Reflectionクラスは記述が面倒
priva
PHPUnitでプライベートメソッドのテストを行う方法
## はじめに
通常の方法ではpublicメソッドしかテスト対象とすることができませんが、少しコードに手を加えることでprivateやprotectedのメソッドもテストができるようになります。
このページでは、private(protected)メソッドのテストを簡単に行うためのメソッドの紹介をします。## 対象
– Laravel
– PHPUnit## ソースコード
“`php
/**
* Execute private function test.
*
* @param $class 対象とするクラス
* @param string $methodName メソッド名
* @param array $arguments 引数(配列指定)
* @return mixed
*/
protected function executePrivateFunction($class, string $methodName, array $arguments)
{
$reflection = new ReflectionClass($class);
PHPマニュアル完全解読 ※しばらく更新
PHPマニュアルをこれから作っていく
1・文字列:
2・戻り値:
3・評価
4・&記号
5・integer:整数
6・string:文字列
7・参照渡し
8・パラメータ
9・[]:オプション(あってもなくても良いもの)返り値
1・【: string】文字列が返り値として返ってくる
2・【: void】返り値なし
web proxyを構築したら凄い勢いで草が生えた話
#経緯
iframeなどで他サイトのページを画面に組み込む時にweb proxyがあると便利な事はよくあると思う(httpとhttpsが混在する時など)。
phpで受け取ったurlをcURLで取りに行ってbaseタグを書き加えるようなweb proxyを作り1ヶ月ほど放置していたら、徐々に動作が重くなり遂に動かなくなった。
メモリ不足かストレージが埋まったかと思ったが違った。
#原因
server-statusでも見るかと思って表示した状態がこちら。
![www.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/563735/d7f0f5f0-a25c-e270-7dc3-bd362a8cd4a2.jpeg)
**埋まってるWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW**公開proxyとして捕捉され、free proxyサイトに掲載されていました。
#対策
もともと公開proxyにならないようにhashキーを持ったアクセス以外は制限する機能はあったが、デバグのためにoffにしていた。
laravelミドルウェアについて[メモ]
laravelで自作のミドルウェア作成する機会があったのでメモとして残していこうと思います。
■目次
・laravel MVC+(ルーティングとミドルウェア)について [図]
・ミドルウエア実装■環境
・laravel5.8
・php7.2#laravel MVC+(ルーティングとミドルウェア)について [図]
![Untitled (Draft)-1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/700700/46834ab6-abf8-0550-e66b-4731d912faac.jpeg)図で書くとこんな感じです。
ミドルウェアは
ルーティングからコントローラ行くまでに実行されます。
(例)認証チェックなど#ミドルウェア実装
■前提(投稿アプリ作成)
現状として、
投稿4つあります。
id:4が自分が投稿したidとします。
しかし、localhost/post/1/editにアクセスするとid:1の投稿にアクセスでき変更更新ができてします。
今回はミドルウェアを使って解決し
【MySQL】データベースからデータの取得 クエリ(query)
MySQLデータベースからphpでデータを取得するメモ。
“`php
$records = $db->query(‘select * from [テーブル名]’);
while ($record = $records->fetch()){
print ($record[‘[カラム名]’].”\n”);
}
“`
【MySQL】PHP $_POSTの値をデータベースに挿入する
PHPで作成したフォーム等から受け取った$_POSTの値をMySQLデータベースに挿入する方法をメモ。
###DB接続
どのデータベースにどのユーザーが何のパスワードで接続しようしているかを記述。“`php
$db = new PDO(‘mysql:dbname=[データベース名];localhost=[ホスト名またはIPアドレス];charset=utf8mb4′,'[ユーザー名]’,'[ログインパスワード]’);
“`
例えば、
・データベース名:mydb
・ホスト:ローカルホスト(ローカルホストの場合は、localhostか127.0.0.1と記述する)
・ユーザー名:root
・パスワード:root
の場合“`php
//例)
$db = new PDO(‘mysql:dbname=mydb;localhost=127.0.0.1;charset=utf8mb4′,’root’,’root’);
“`
オプションを記述する場合“`php
$db = new PDO(‘mysql:dbname=mydb;localhost=127.0.0.1;charse
Laravel PHP 送信されたファイルの拡張子をMIMEの情報から取得する
# 目的
– Postされた拡張子を取得する方法をまとめる
# 方法
1. inputのnameでimageとしている場合に受け取るときに受け取り側のコントローラーに下記を記載する。
“`php
$extensions = $request->file(‘image’)->guessExtension();
“`1. `$extensions`にファイルの拡張子が格納される。
LaravelでSwaggerを自動生成する
## 環境
– Laravel 8.35.1
– PHP 7.4.16## l5-swaggerを追加する
“`
$ cd /path/to/project
$ composer require “darkaonline/l5-swagger”
“`## 書き方
### @OA\Info
プロジェクト内のどこか1か所に定義すれば良い。
複数存在するとエラーになる。“`php
/**
* @OA\Info(
* version=”1.0.0″,
* title=”Swaggerタイトル”,
* description=”Swaggerの説明”,
* )
*/
“`#### 設定例
“`php
Uncaught Error: Call to undefined method PhpCsFixer\Config::create()
## PhpCsFixer で以下のようなエラーが出るようになった
“`
PHP Fatal error: Uncaught Error: Call to undefined method PhpCsFixer\Config::create()
“``php-cs-fixer` の `v3.0.0` が `2021-05-03 21:51 UTC` にリリースされました。
その際、破壊的な変更として、
> method create of class Config has been removed, use the constructorが行われた様子。詳しくは、以下参照のこと。
https://github.com/FriendsOfPHP/PHP-CS-Fixer/blob/3.0/UPGRADE-v3.md結果として、前述のエラーが出るようになりました。
> PHP Fatal error: Uncaught Error: Call to undefined method PhpCsFixer\Config::create()## とりあえずの対策
`v3
spotify x LINEで音楽をタイマー替わりにするLINEBOT作った
## はじめに
LINEBOTでなにかつくりたかった・・!
https://qiita.com/inoue2002/items/7e47283ba9affa0fac82
こちらの記事を見た時、音楽をタイマーがわりにできないかな、と思ったのがきっかけです。## 作成したBOTの使い方
以下のQRコードから友達追加
![947sybkb.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435661/a835cfee-1063-8fcf-cc69-0df3a6cfc0b0.png)1.メニューから「get music!!」をタップ
2.「1分,2分,3分,,」と選択肢が出るので、返して欲しい分数の曲を指定する
3.spotifyのURLが返ってくる![ezgif-2-e1a8c0c8a3f7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435661/df47893a-705f-0591-5c47-08ade0bc
SQLインジェクションが話題になってるけど
SQLインジェクションが話題になっている。多分あの話題はデマだとは思うが、それが何なのかの知識はあったほうが良いと思う
## SQLインジェクションとは
まず、以下のようなテーブルが存在するとする。
“`sql
CREATE TABLE `table` (
`id` INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
`content` VARCHAR(255) NOT NULL
) Engine=InnoDB;
“`次に、以下のようなコードを考える。
“`php
query($sql);
// 以下、$resを使って処理を行う
“`これを使うと何が起きるか説明すると、qパラメータに`A%’ OR ‘%’ = ‘`と指
UTCタイムスタンプ(UNIX時間)をJSTに変換して表示するワンライナー
<追記>
さらに短く書けると @nazka9o さんからコメントいただきました。コメントのワンライナーのほうがさらにラクかと思います。
追記>https://qiita.com/ryoto20707/items/19c5bc6646db99bd3acb
こちらの記事のphpスクリプトを参考にして、ワンライナーでUTCなUNIX時間からJSTの見やすい表示に変換するワンライナーを作りました。
頭が悪いため、UTCとJSTの変換で毎回悩んでしまうのです。“`shell
$ echo 1620889236 | (read t; php -r “echo (new DateTime())->setTimestamp($t)->setTimezone(new DateTimeZone(‘Asia/Tokyo’))->format(‘Y/m/d H:i:s’) . PHP_EOL;”;)
2021/05/13 16:00:36
“`キモは変換させたいUNIX時間をphpスクリプト内に書かず、スクリプトの最初のほうに書いてあるってところです。echoとreadを駆使してSHEL
日付関連のテストを書く時は絶対にスタブ化しろ
## サンプルコード
スタブ化しないとまずいケースを紹介します。
“`ProductCode.php
cancelDate = $cancelDate;
}/**
* @param string キャンセル日
*/
public function setCancelDate($cancelDate){
$this->cancelDate = $cancelDate;
}/**
* 有効なユーザーか無効なユーザーかを文字列で返す
*
* @return string
*/
public
laravel8 authインストール(メモ)
laravel/uiインストール
“`
composer require laravel/uiphp artisan ui vue –auth
“`ルートに
“`
use Illuminate\Support\Facades\Auth;
“`
「WP-PostViews」プラグインでタグを人気順(閲覧数順)に表示する方法
WordPressって情報が豊富にあって便利な分、情報が無いときにしんどい思いをすることもあります。
最近開発したWebメディアで、タグを人気順に並べる要望があったのですが、全く情報がなかったので自分で作ることになりました。
知識のある人からすると何てことはないと思うのですが、誰か同じことで困っている人のためになればと思い、まとめてみようと思います。
##結論
まず結論から。
WordPressで「WP-PostViews」プラグインを有効化し、以下のコードでタグを人気順に並べて表示することが可能です。
(ここでは紹介のためにHTMLと混合して書いていますが、実際はそれぞれの環境に合わせてfunction.phpにまとめてメソッド化するべきでしょう。)“`php
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた