WebエンジニアのLoL日記

LoLをプレイしたりLJLの試合を見たりするのが好きなエンジニア。LoLのイベントやパッチノートなど気になった点を記事にしたり、LJLについの記事をかいたりしています。某社でWeb系のエンジニアとして働いているので、技術系の記事もたまに書きます。コンタクトを取りたい場合はtwitterまで。

PHP

PHP7の例外(Exception)の関係、正しく例外を使いましょう。

Thorowable Error Exception RuntimeException LogicException まとめ PHP7の例外のうちよく使う例外と構造は以下の通りです。 Thorwable Error Exception RuntimeException LogicException もっと詳細な図は以下の記事を見るとわかりやすいです。 qiita.com…

PHP Slim Framework を使いこなすための仕様詳細 ※順次追記していきます

はじめに バージョン 参考 Request 継承関係 Psr\Http\Message\MessageInterface と Psr\Http\Message\ServerRequestInterface Requestクラスで定義されているHTTP Method Request::getParam($key, $default = null) Request::getMethod() はじめに Slim Fra…

PHPのモックフレームワークMockeryでprotectedメソッドをモックする

PHPのモックフレームワークでprotectedメソッドをモックしたくなる場合があります。例えば、 database = $database; } public function save($title, $description) { $createdAt = $this->now(); $database->store($title, $…

PHPのcallableとその呼び方とクラスプロパティについて

先日、こんな事件がありました。 どういうことなのか もっとわかりやすく 何が間違いなの? 具体的に動くコードで見てみる わかりましたか? 先日、こんな事件がありました。 func; $func(); // これ以降 $func は使われていない } } このようなコードがあり…

PHP7化する際にcountメソッドとException周りでハマる件

PHP

countメソッド Exception周り まとめ countメソッド 要するに以下のQiitaの記事の内容である qiita.com PHPのcount関数を利用したときに以下のWarningげ出ることがある Warning: count(): Parameter must be an array or an object that implements Countable…

PHP Mockeryでパーシャルモックなどを作る場合にコンストラクタがちゃんと呼ばれるようにしたい

Mockeryでパーシャルモックを作ることがある repository = new Repository(); } public function モックしたいメソッド() { } public function モックしたくないメソッド() { } } // テスト $mock = \Mockery::mock(モックしたクラス)->makePartial(); $mock…

PHP Slim FrameworkのMiddleware

もくじ もくじ Middlewareとは Middlewareの実装方法 Middlewareの利用方法 どういうときに使うか Middlewareとは beforeとafterを指定できる Middlewareの実装方法 functionで実装するかClassで実装するかがあるけどクラスで実装したほうがいいだろう

MacのApacheとPHPのバージョンが勝手に上がったので設定をし直す

もくじ もくじ 概要 Set the 'ServerName' directive globally to suppress this message configの場所を特定する ServerName を書く PHPの問題 brewでインストールされているPHPのディレクトリ Apache用のPHPモジュールのディレクトリ ApacheのconfigにPHP…

PDOのconstructでSQLSTATE[HY000] [2002] No such file or directoryが出る場合

もくじ もくじ PDOの__construct()でNo such file or directoryが出るけど原因がよくわからん場合 修正方法 UNIXソケットファイルの場所を確認 php.iniの設定を確認 修正方法 参考 PDOの__construct()でNo such file or directoryが出るけど原因がよくわから…

PHP5.6からPHP7系にするときに修正した点まとめ

背景 あるプロダクトをPHP5.6からPHP7にアップデートする対応をしたので、その時に修正した点まとめです。あくまでもその時に修正した点をまとめたもので、PHP7での変更点を全てまとめたわけではありません。 また、mysql系関数が廃止される件については、長…

PHP で GuzzleHttp と DOMDocument/DOMXPath を使ってページのスクレイピングをする

PHP

はじめに この記事は PHP Advent Calendar 2017 - Qiita の22日目の記事です。 昨日の記事は Khigashiguchi さんの PHPでTDD開発するまでに通った道のり - Qiita でした。 PHP で Web ページのスクレイピングをする ページのスクレイピングといえば、RubyでN…

PHPのSplPriorityQueueで複雑な実装をしようとするとたまにおかしい時がある?

PHP

SplPriorityQueue を継承したらちょっと複雑なPriorityQueueが実装したりできるのですが、なんかたまにうまく動かないことがあります。 正常に動く例: 長方形を面積が大きい順に並べる SplPriorityQueue を継承して、 insertRectangle というメソッドで面積…

PHPのPriorityQueueの実装についてとSplPriorityQueueの使い方

PHP

JavaやC++だとPriorityQueueが標準ライブラリで用意されているイメージがありますが、PHPはあまりそういったイメージがありません。しかし、PHPでもちゃんとPriorityQueueが標準で用意されています。 SplPriorityQueue の使い方 PHPのPriorityQueueの実装がS…

MacでHomebrewを使っていて、コマンドラインから叩くphpのバージョンがなんかおかしくなった場合の対処

概要 ある日 composer install するとこんな警告が出た phpunit/phpunit 5.7.21 requires php ^5.6 || ^7.0 -> your PHP version (5.5.20) does not satisfy that requirement. phpunit 5.7.21 を利用するには php5.6 以上または php7.0 以上が必要だが、あ…

libprotoc 3.0.0 から libprotoc 3.3.2 にアップデートしたらコンパイル時の namespace 指定が効かなくなって GPBMetadata が生成されるようになった

状況 PHPで書かれたプロジェクトで protocol buffer を利用していた。最初は libprotoc 3.0.0 を使用していたが、 これを 3.3.2 にバージョンアップした瞬間、 コンパイルオプションの namespace が効かなくなり、3.0.0 とは異なる成果物が生成されるように…