gallu’s blog

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

PHP

「文字コードを変換しつつCSVファイルを読み込む」時の書き方

PHP

なんか、毎回 ・「書ける」のは覚えてる ・書式を忘れる のループに陥ってるので、備忘録(苦笑 // CSVの読み込み $file_name = ファイル名; $file_name = 'php://filter/read=convert.iconv.SJIS-win%2FUTF-8/resource=' . $file_name; $file_obj = new SplF…

PHP7.4系のコンパイル

PHP

いやまぁ sh ./configure -hでチェックしろ、って話しではあるのですが。PHP7.3系とPHP7.4系で、configure のオプションがちょいと変わっております。……ちょろっとべっくらこいたよおいちゃん。 おいちゃん、PHPは自力コンパイルする事が多くて、もうちょっ…

Slim4-Skeleton解析のためのSlim4解析のためのPHP-DIの解析

タイトルが長い(笑いやまぁ色々と調べていてそれはそれで後で記事にするのですが。 Slim4で使われているContainerについてちょいと調べたので、備忘録かてがて。Slim3では "pimple/pimple" が使われていたのですが、Slim4では "php-di/php-di" が使われてい…

PHPで「型宣言された引数の型の名前」を知る方法

元々は、Laravelで興味深い機能*1を見かけたのが初手で。 その後、(近々公開しますが)Slim4のContainerでも似たような事をやっていたので、ちぃと思い切って調査をしてみました。端的には ・関数(メソッド)宣言で引数に型宣言をしている時に、「なんのクラス…

いにしえ(かもしれない)技法:bit演算変

PHP

bit演算を使ったプログラミング、割と「知られてないのでは?」という感じがあったので。 ここでは少し抽象的な部分が混ざってしまうのだけど、まぁなんかの一助になるかなぁ、くらいの感じで、めも。大まかには ・処理が「A」「B」「A+B」みたいな感じの時…

0000-00-00 と PHP

MySQLの、(少なくとも一部では)悪名高き 0000-00-00 について、は、そこそこブログがあるのですが。 「それを、PHP(plain)とか(PHPの)フレームワークとかでどうやってるんだろ?」というのが、ざっくりググった限りだと案外と無かったので。 調査かてがて、…

日付関連の小ネタ

PHP

片や。 PHPでstrotimeは割とよく使われる関数かなぁ、と思います(DateTimeクラスのコンストラクタに渡す引数、と読み替えてもよいです)。片や。 善し悪しはとりあえず置いておくとしまして、MySQLを使っていると「0000-00-00」というブツが出てくることは、…

validationについて考えてみる

「について考えてみる」三部作(って今決めたw)、最後の項目。 内容は「validation、をどこに実装するか?」てなお話です。一旦、Webアプリケーションのお話で展開します。。 前提として、Modelのお話が出てくるんで https://gallu.hatenadiary.jp/entry/201…

Modelについて考えてみる

あちこちで「MVC」と言われつつ、なんか気がつくとMVPとかMVVMとか色々出てきて。 一方でじゃぁ「Model、って単語自体はは大体共通認識なのか?」と問うと、これがまた………。というあたりで。 ちぃとごみごみと混雑しているように思われるので、一端、考察し…

ORMについて考えてみる

ORMで初っぱなボケようとして割とよい感じの「別の意味」が見つからなくてもんどり打ってるおいちゃんでございます*1。 まぁボケっぱなしだと話が続かないので、速やかに本題に。Object-relational mapping、でございます。O/RMって書かれたりORMって書かれ…

Slimは本当にスリムなのだろうか?

ちょいと気になったり興味があったりしたので、いくつかの「比較的(日本で)ポピュラーと思われる」PHP Web Application Framerowkの、行数とかファイル数とかを調べてみました。 まずインストールですが、本日のタイミングで composer.phar create-project l…

SlimとSlim-Skeleton のindex.php

公式サイト http://www.slimframework.com/ のサンプルだと、index.phpは get('/hello/{name}', function (Request $request, Response $response, arr…

Twig チートシート

「あんちょこ」って大分と古くてあんまり使われてない単語なんだなぁ……というあさってな方向からの感想を述べつつ。 単置換 一番の基本だよねぇ。いわゆる「この変数を出力」ってやつ。 {{ variable }}配列は.(ドット)でつなげる感じ。 {{ array.key }} フ…

「空っぽのPHPバッチ」の処理コスト

ちょいと故があって、LaravelとplainなPHPとでの、バッチの処理コストを確認してみたんだけど………思ったより差異があって、幾分、びっくり(苦笑 なので、参考とmemo程度に、記録を残しておきます。環境その他によると思うので、参考値程度に。 PHPのバージョ…

Slim docsの解析; Cook book

これは……重量級かも。 URIが個々に違うので、頑張れるところまで。 Trailing / in route patterns https://www.slimframework.com/docs/v3/cookbook/route-patterns.html 「スリムは、末尾にスラッシュが付いたURLパターンを、スラッシュなしのものとは異な…

SQL識別子のエスケープ処理とか、どうすっぺか??

PHP

発端としては。 Slimを色々いじってるなかで「まぁちょっとしたツールくらい欲しいよねぇ」になり、その過程の一つとして「ほんのりしたModelクラス欲しいなぁ」がありまして。 でまぁ $r = モデルクラス::insert(データのハッシュ配列);とかって書式でいけ…

Slim docsの解析; System Error Handler

https://www.slimframework.com/docs/v3/handlers/error.html 地味に大事なあたり。 Default error handler 「デフォルトのエラーハンドラは非常に基本的です。 Responseステータスコードを500に設定し、Responseコンテンツタイプをtext / htmlに設定し、Res…

Slim docsの解析; 寄り道してCookie

Slim docsには記載がないっぽいのですが。 まぁ普段「sessionとCookieはよく使うよねぇ」というあたりで、その辺を少し検証。 なおセッションはどうも、公式のSkeletonですら ・自力でsession_start()発行 ・sessionっぽい字面のクラスがない ので、「おとな…

Slim docsの解析; Middleware

https://www.slimframework.com/docs/v3/concepts/middleware.html ネタ的には「最重要クラス」に重要なネタなので、腰を据えて。 とりあえず、こちらの画像が一番わかりやすいんだろうなぁ、って思う。 https://www.slimframework.com/docs/v3/images/middl…

Slim docsの解析; Routing

https://www.slimframework.com/docs/v3/objects/router.html まごうことなき大物。 腰据えていきませう。……下手したら二分割かも。 How to create routes。 うん、ここはまぁOK。 おいちゃん的には $app = new \Slim\App(); $app->get('/books/{id}', クラ…

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 文字までに切り詰められま…