がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

PHP

Slim docsの解析; The Response

https://www.slimframework.com/docs/v3/objects/response.html ここも結構な大物だろう、と予想。 How to get the Response object いやまぁHow to言われても「呼ばれる関数(メソッド)の第二引数でゲトれる」くらいだしなぁ。 get('/foo', function (Ser…

Slim docsの解析; The Request

https://www.slimframework.com/docs/v3/objects/request.html 多分、ここは大物w とりあえずルーティング設定。 関数とか「設定できる」んだろうけどやる気はないんで、無視w The Request Method ………まぁ一通り。GET,PUT,POST,DELETEくらいしか使う気ない…

Slim docsの解析; The Application

https://www.slimframework.com/docs/ の中から「The Application」をざっくりと見て、興味深いところをメモ。 https://www.slimframework.com/docs/v3/objects/application.html $config = [ 'settings' => [ 'displayErrorDetails' => true, 'logger' => […

Slim skeletonの解析

さて続きましては slim/slim-skeleton の解析。 https://github.com/slimphp/Slim-Skeleton なので、なんとなし「多分公式が推奨してるんじゃないかと思われる方向性」が確認できるんじゃないかなぁ、と期待。 ……で調べたら、別の人が作ったスケルトンもある…

解析その4

核心……、の、はず!!w 「Routeの__invoke」からのstartでございます。 vendor/slim/slim/Slim/Route.php public function __invoke(ServerRequestInterface $request, ResponseInterface $response) { $this->callable = $this->resolveCallable($this->ca…

解析その3

そろそろ核心………かなぁ?w 前回出てきた、本命くさい vendor/slim/slim/Slim/App.php の__invoke()メソッド。 // Get the route info $routeInfo = $request->getAttribute('routeInfo');なんとない想像はできるんだけど、躊躇なくvar_dumpして確認w NULL …

解析その2

さて。本丸のrun()メソッド。 多分、ここからが長丁場な予感(笑 vendor/slim/slim/Slim/App.php public function run($silent = false) { $response = $this->container->get('response'); try { ob_start(); $response = $this->process($this->container->…

解析その1

一瞬「解析シリーズ」とかやってみようかしらん? とか、思ってみたりみなかったり。 おいといて。 さて、ゆるゆると解析開始。 まぁ大概のWebアプリケーション、最近は「ここから始まる」1点があるので、そこを確認。 よっぽどヒネてない限り、大概は「Doc…

Slim初めてみました

ちと色々と思考して、もしかしてSlimは割と「好みな可能性」を想起したもので。 いったん、分解して色々と整理してみたいなぁ、と思いました的、宣言エントリ。 いったん、環境だけ作成しました。 slim-skeleton使ったのと、ほぼ純正にSlimのみ、の2環境。 …

password_hashをどうやって使おうか?(04/15修正)

なんか最近「パスワード、いくつかの単語を組み合わせた長い文字列のほうが安全だよねぇ」的なお話が云々。 それを考えた時、今まで割と気にならなかった「警告 PASSWORD_BCRYPT をアルゴリズムに指定すると、 password が最大 72 文字までに切り詰められま…

複合主キーの扱い方(一部)

LaravelのModelである「Eloquent ORM」で、複合主キーを扱う時の知見を得たので、備忘録的に。 Laravel5.5でやってます。それ以外のバージョンでどうなるかは不明です。 前提として。 おいちゃんは基本「サロゲートキー基本的にお好まない」一派です。 http:…

foreachとか使わないのかしらん?

PHP

定期的に見かけるんだけど、今日もふと見かけたので、割と本気で疑問なので一度書いておこうかなぁ、と。 おいちゃん的には「foreachでくるんだらほんの少しだけ楽ぢゃない?」って思うようなコードが割とコピペで書かれているのを散見するので、「なんか理…

Model、どうすっかねぇ? 的な

直近思案しているのはLaravel5.5案件なのですが。 まぁ割と「あちこちのPHP MVCフレームワークで言える(ような気がする)」ので、あちこちに疑問を投げかける的な想定で。 端的には「データの入力やvalidateの処理、Modelに書きますか? Controllerに書きます…

PHPで動的なSQLでプリペアドステートメントな一例(本題は、IN句でどうやってプリペアるか)

PHP

端的には「PHPで、動的にSQL文を組む必要があるときにどうやってプリペアドステートメントで組んでいくか」の一例と、それに合わせて「INをうまいことプリペアドステートメントで使いたい」時の一例を書いてみます。 いやなんか知られてるような知られてない…

多言語対応のあれこれ

ふと生徒さんに質問をいただいたのもあって。 ちょうどよいきっかけになったので、せっかくなんでBlogで。 本質的には「どの言語のどの領域」でもある程度応用が利くかと思われますが。 一応、おいちゃんの記述なんで「MySQLでPHPつかったWebアプリケーショ…

簡単な「メッセージキュー」の仕組みを作ろうかなぁ……

PHP

んと…いわゆる ・バラバラとタスクを不定期に詰め込んで ・定期的なバッチで「積みあがった」タスクをまりもりとこなす ってのは、例えばAWSなんかだとSQSとかで提供されている機能なので、まぁある程度のニーズはあろうかと思われるのです。 ただ一方で「AW…

思案中……

身内に流そうかとも思ったのですが、いっそ「広く意見を募集しようかなぁ」などと思い、こちらに。 # いやまぁ身内にも流すんだがwww 幾分「ある程度、おいちゃんの手の内性格経歴その他を把握している前提」な文面があるので。 不明点は、コメント等で質…

CAS実装……の前提のお話

ふと、色々と紆余曲折があった末として「MagicWeaponのdata_clumpで、cas形式の楽観的ロック、実装してみようかしらん?」というような発想がありまして。 その前提として「cas tokenど〜やって実装しよう?」から、比較的現実的な可能性があるあたりを妄想…

グローバルスコープ変数? filter_input関数? (それともNULL え・ん・ざ・ん・し?(はぁと))

PHP

ふいっと、filter_input関数を思い出しまして(って程度には使ってないw)。 機能的にはさほど大きな違いはないと思われるので、まずは性能をチェック。 基本は以下のコードで、コメントアウトを適宜はずしつつ測定。

str_replace()の第一&第二引数は、文字列? 配列?

PHP

結論から書くと、マニュアルに書いてある通り search と replace が配列の場合、str_replace() は各配列から値をひとつ取り出し、 subject 上で検索と置換を行うために使用します。 なのですが……ちょっと驚いたので。 端的には、以下のコード。

大きなIDをどうやってPHPからMySQLに渡す?:詳細:PHPからcall編

とりあえず、ざっくりと接続してデータをfetchAllでゲトって、「ゲトれる事」をほんのりと確認してみましょう。 基本になるコードは以下の通り。 移行、SQL以降部分だけ適宜すりかえながらやっていきます。 false, ); // 「複文禁止」が可能なら付け足して…

大きなIDをどうやってPHPからMySQLに渡す?:詳細:MySQL編

とりあえず「思考の流れと調査の流れ」をそのまま書くので、読みにくいのはごめんなさいまし。 まずはいくつか検証テーブルを用意…する前に、MySQL自体の動きの確認を。 直近、参考にさせていただいたのは、hnwさんのこちらのサイト。 http://d.hatena.ne.jp…

大きなIDをどうやってPHPからMySQLに渡す?:発端とまとめ

あるタイミングで、プリペアドステートメント回りのお話と、IDのカラム(によって決まる最大値)のお話と、intサイズのお話が別々に来た時に……頭ん中で混ざって、「あれ?」と思った事があったので調べてみた、って感じになります。 まず話に出ていたのが「AUT…

date関数か、DateTimeクラスか、DateTimeImmutableクラスか

PHP

元ネタは、直近でもないのですが、date関数で書いていたものがDateTimeクラスに書き換えられていた、ってのがありまして。 ふと「そういえば、色々とこの辺は今、どうなんだろう?」という疑問が出てきたのが初手のお話です。 で、先に。 「PHP5.5.0以降前提…

講義資料用のgit commitコマンド自動作成プログラム

PHP

超絶雑なブツなのですが。 んと……おいちゃん、元々「頭からケツに向かってコードを書く」ってことはあんまりしなくて。 「最低限これだけ」「これも必要になったから追記して」「あれが必要になったから共通化して」って感じで、切ったり張ったりしながらコ…

PHPUnitの、小数点同士の比較

PHP

PHPUnitの本体記事は今度書く予定ですが、今日はちょろっと、横道を。 おいちゃん、2a問題( http://d.hatena.ne.jp/gallu/20061108/p1 )があったりあったりするので。 PHPUnitでは、まずもってassertEqualsを使うためしはなく、必ずと言っていいほど(ってい…

PHPエンジニアがPythonに触れてみる:まずはインストール

さておいちゃんが果たして「PHPエンジニアなのか?」というのは、微妙に疑問もあるのですが(PHPばっかりではないし、さりとて最近はPHPが圧倒的に多いのも事実だし)。 いわゆる「初めての**」的な感じのPython版は、書籍なりWebなり色々あるかと思うので。…

ini_set()どうすっかねぇ…

PHP

色々とテストを作っていてふと「ini_set()のテストも組まないとなぁ」が、面倒の始まりでした。 当初の思惑としては「多分、noticeなりwarningが出るだろうから、その辺のエラーうまいこと拾えばよいかねぇ」とか思ってたのですが。 「戻り値にfalse返してく…

やっぱり「型に厳格なのは大事だなぁ」という雑感

PHP

大本のネタは https://twitter.com/ndxbn/status/808159644874993664 「in_array の第3引数にtrue必須」っていうコーディング規約をCIで回したい人生だった。 https://twitter.com/gallu/status/808161595578662912 @ndxbn in_array()、色々と気になるから使…

before_filter的なほにゃらら、の想定

元ネタは、友人の 会員登録に住所が必要な場合の「数字は全角で」「数字は半角で」もそろそろどうにかならんのか ってあたりの発言。 まぁ実際「住所入力全角のみ」で、番地数半角ではねられていらついたとかいうケースは割と後を絶たないわけでして。 その…