はじめに 個人的に役に立ったページです 執筆時のLaravelの最新版は 5.8 です 基本は公式ドキュメントが大事 随時更新していきます Homestead Laravel Homestead 5.8 Laravel HomesteadでPHP(Laravel)アプリケーションが動作しなくなった時の対処法 Model, M…
環境 はじめに is_numeric ctype_digit 結論: filter_var 環境 利用しているバージョンは PHP 7.2 ですが、結構幅広いバージョンに通じる話だと思う。 はじめに PHPのキャストがガバガバなのはみなさんご存知だろう。 $ php -r "var_dump((int)'ホゲーーー')…
Interfaceを利用する意義 Laravelでどうやって注入するの? サービスプロバイダとは register メソッドでDIの設定を書く Interfaceへの実装注入以外の用途でも使える まとめ Interfaceを利用する意義 LaravelはDIを勝手にいい感じにしてくれます。例えばこう…
はじめに PHPのWebフレームワークといえばLaravelである。今PHPでWebアプリケーションを開発するならLaravelを使っておけば間違い無い。 LaravelにはHomesteadという開発環境が用意されていて、これを使えばすぐにWebアプリを作成できる。 環境 今回はMacで…
はじめに PHPのGuzzleHttp *1 を利用し、以下のようなコードを書いた。 guzzleClient は コンストラクタDIなどを利用して // $this->guzzleClinet = new \GuzzleHttp\Client(); を差し込むようにする $response = $this->guzzleClient->post($url); } catch …
概要 ??= 演算子とは この演算子が使えない理由 関係する演算子の歴史 三項演算子 a ? b : c 二項演算子 ?: 演算子 ?? まとめ 参考 概要 PHP 7.4 から ??= 演算子が追加されることが確定しました。 github.com ??= 演算子とは $var ??= <value> は、 $var が null </value>…
これはなに? PHPで新規開発する際にどういう構成だったりフレームワークにしていくかなというメモです。 PHPの特徴 ゆるふわで書けるので開発スピードが早い。 学習コストが低く直感的なので誰でもすぐに書ける。 利用者が多くライブラリが充実している。 P…
はじめに 機能の概要 v1 との違い 対応している型 callableについて strict_types 継承 将来の話: readonly 値の初期化 参照渡し さいごに 参考 はじめに PHP 7.4の新機能としてクラスのプロパティに型がかけるようになる機能が提案されていました。これはTy…
はじめに 2018年9月にSlimの3.11がリリースされました。私がslimフレームワークを採用して開発を始めた時のバージョンは3.9.2でした。3.9.2のリリースが2017年の11月、3.10.0が2018年の4月。3.9.2から2回のリリースがありました。 3.10.0の変更 3.10.0の変更…
前回のあらすじ 以下の記事の続きです。 www.utakata.work FluentPDO *1 というライブラリのSelectQueryメソッドをMockeryでMockしようとすると、Declaration of Mockery_3_SelectQuery::__call($method, $args) should be compatible with CommonQuery::__c…
はじめに MockeryとFluentPDOの実装を追ってみる。 どうするか はじめに PHPのモックフレームワーク「Mockery」を利用してクラスをモックしようとした際に以下のエラーが出た。 Declaration of Mockery_3_SelectQuery::__call($method, $args) should be com…
はじめに 新しくAPIサーバーを建てるまでの話 新サービスを建てるにあたり考えなければいけないこと 開発を進めるにあたり 言語・フレームワーク・ミドルウェア選定 フレームワークどうするか GraphQLを採用するか、JSONのREST APIにするか サーバー構成をど…
はじめに PHPのバージョン empty(false) は true is_numericはfloatでもtrue $datetime->format の t まとめ はじめに PHP アドベントカレンダー が結構空いているので突貫で記事を書いています。 以前、以下のような記事を書きました。 www.utakata.work ま…
はじめに この記事は GraphQL Advent Calendar 2018 - Qiita の4日目の記事です。 昨日はgipcompanyさんのLet's Paginate! - GraphQLでページネーションをやってみよう!でした。 PHPでGraphQL GraphQLが話題になり始めたぐらいの時に、「GraphQL便利そうだ…
Thorowable Error Exception RuntimeException LogicException まとめ PHP7の例外のうちよく使う例外と構造は以下の通りです。 Thorwable Error Exception RuntimeException LogicException もっと詳細な図は以下の記事を見るとわかりやすいです。 qiita.com…
はじめに バージョン 参考 Request 継承関係 Psr\Http\Message\MessageInterface と Psr\Http\Message\ServerRequestInterface Requestクラスで定義されているHTTP Method Request::getParam($key, $default = null) Request::getMethod() はじめに Slim Fra…
PHPのモックフレームワークでprotectedメソッドをモックしたくなる場合があります。例えば、 database = $database; } public function save($title, $description) { $createdAt = $this->now(); $database->store($title, $…
先日、こんな事件がありました。 どういうことなのか もっとわかりやすく 何が間違いなの? 具体的に動くコードで見てみる わかりましたか? 先日、こんな事件がありました。 func; $func(); // これ以降 $func は使われていない } } このようなコードがあり…
countメソッド Exception周り まとめ countメソッド 要するに以下のQiitaの記事の内容である qiita.com PHPのcount関数を利用したときに以下のWarningげ出ることがある Warning: count(): Parameter must be an array or an object that implements Countable…
Mockeryでパーシャルモックを作ることがある repository = new Repository(); } public function モックしたいメソッド() { } public function モックしたくないメソッド() { } } // テスト $mock = \Mockery::mock(モックしたいクラス::class)->makePartial…
もくじ もくじ Middlewareとは Middlewareの実装方法 Middlewareの利用方法 どういうときに使うか Middlewareとは beforeとafterを指定できる Middlewareの実装方法 functionで実装するかClassで実装するかがあるけどクラスで実装したほうがいいだろう
もくじ もくじ 概要 Set the 'ServerName' directive globally to suppress this message configの場所を特定する ServerName を書く PHPの問題 brewでインストールされているPHPのディレクトリ Apache用のPHPモジュールのディレクトリ ApacheのconfigにPHP…
No such file or directory は UNIX ソケットのファイルが見つからないエラー 修正方法 UNIX ソケットファイルの場所を確認 php.ini の設定を確認 php.ini の修正 参考ページ No such file or directory は UNIX ソケットのファイルが見つからないエラー PDO…
背景 php7ccを利用したチェック php7ccのインストール php7cc の使い方 PHP7化にあたり修正が必要だった箇所 古い形式のコンストラクタ 参照渡しnewの削除 preg_replace 関数の e 修飾子が使えなくなった 参考 String, Int という名前のクラスは定義できなく…
はじめに PHP で Web ページのスクレイピングをする 利用するのはGuzzleHttpとDOMDocument DOMDocument DOMXpath GuzzleHttp GuzzleHttpのインストール スクレイピングしてみる GuzzleHttpを使ってHTTPリクエストを送る Guzzleで受け取った結果をDOMDocument…
状況 composer remove --update-with-dependencies でもだめだった 一番確実なのは composer.lock を作り直すことだが... ただ、バージョンが固定されておらず composer.lock を簡単に消せないことも ではどうすればいいのか composer.lock を読む どうやっ…
SplPriorityQueue を継承したらちょっと複雑なPriorityQueueが実装したりできるのですが、なんかたまにうまく動かないことがあります。 正常に動く例: 長方形を面積が大きい順に並べる SplPriorityQueue を継承して、 insertRectangle というメソッドで面積…
JavaやC++だとPriorityQueueが標準ライブラリで用意されているイメージがありますが、PHPはあまりそういったイメージがありません。しかし、PHPでもちゃんとPriorityQueueが標準で用意されています。 SplPriorityQueue の使い方 PHPのPriorityQueueの実装がS…
概要 ある日 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 以上が必要だが、あ…
状況 PHPで書かれたプロジェクトで protocol buffer を利用していた。最初は libprotoc 3.0.0 を使用していたが、 これを 3.3.2 にバージョンアップした瞬間、 コンパイルオプションの namespace が効かなくなり、3.0.0 とは異なる成果物が生成されるように…