PHPフレームワークのLaravelをWindows環境で使っていて、php artisan serveコマンドを実行すると下記のエラーが出て起動できなかったので、確認&対処した結果を書いておきます。 ## 出力されたエラー `php artisan serve`コマンドで起動させようと...


PHPのパッケージ管理はComposerの登場によって劇的に改善されましたが、Composerは依存関係を解決するのに非常に時間がかかり、パッケージインストール時にパフォーマンスの問題を引き起こすことが有ります。 Composerの性能向上に関するTIpsがhax0r(...


先ほど、ふとファイル内に"<?PHP"だけの文字列だけを含むphpスクリプトを実行してみた。 すると、スクリプトの出力に"<?PHP"という文字自体が出力されたので、気になって調べてみた。 (本記事は、諸事情によって"<?PHP"を全角で書いて...


Quizletで管理されている単語帳をExcelに出力したかったため、PHPのGoutteパッケージを使用してtsv形式に変換するスクリプトを作成しました。 ※PHPでGoutteパッケージの使い方自体は、[こちらの記事](https://akamist.com/blog/archives/1700)を参考に...


今回は、PHPのスクレイピングライブラリであるGoutteを使用して、指定したURLに対するWebページのタイトルを取得してみます。 ## Goutteパッケージのインストール Goutteパッケージはcoposerのfabpot/goutteパッケージとして提供されています。 c...


PHPでComposerを使用した外部パッケージ管理を行っているとき、`composer update`コマンドを使用することで、パッケージのバージョンアップをまとめて行うことができます。 ですが、テストの都合などで全てのパッケージを一度に最新にせず、特定パッケ...


最近のPHPプロジェクトでは、外部ライブラリを管理するのにComposerを利用することが多いです。 Composerを利用とバージョンや依存関係の自動解決などを自動に行ってくれるため非常に便利ですが、Composerではパッケージを自由に登録できるため、予期せ...


LaravelでORマッパーとして、Eloquentを使用ている場合、タイムゾーンを変更するには、config/app.phpのtimezoneを'UTC'から'Asia/Tokyo'に変更すれば、DBに登録される時刻がJSTになります。 ですが、Laravelを使わずに、Composerを使ってilluminate/da...


PHPのフレームワークLaravelに付属のEloquentでは、デフォルトでデータの登録・更新時刻をそれぞれ、created_at, updated_at列で管理してくれます。 通常はこれで問題ないのですが、履歴テーブルのようにデータの登録だけが行われ、更新されない事が事...


PHPのフレームワークであるLaravelでは、DBアクセスを行うのにEloquentやQueryBuilderという便利なモジュールがあります。 ですが、プロジェクトによってはLaravel以外のマイクロフレームワークや、フレームワークなしの環境だけども、ORマッパーのEloq...


[PHP]Eloquentで日付に関する列定義の命名規則

2017年11月13日 | カテゴリ: PHP | タグ: ,
PHPのORマッパーであるEloquentでは、データの登録時刻・更新時刻と、データの論理削除(SoftDelete)を行うときの削除時刻を自動で更新してくれる便利な機能があります。 今回は、これらの機能を最小の手間で(=Eloquentのデフォルト設定で)利用するため...


PHPのSlim3フレームワークでslim/twig-viewパッケージを使用時、*.twigのビューファイルを変更してもブラウザで表示したときに変更内容が反映されないときがあります。これは、twigがビューのファイルを*.phpに変換した結果をキャッシュしており、元の*.tw...


PHPでルーティングを行うパッケージであるnikic/FastRouteパッケージを利用して、controller-actionスタイルのルーティングを行う方法を説明します。 nikic/FastRouteパッケージは、PHP本体の開発者であるNikitaさんが開発していて、Slim3 Framework...


PHPのマイクロフレームワークであるSlim Frameworkのバージョン3.9.0が、2017/11/04にリリースされました。バージョン3.9.0での変更点は主に不具合修正で、以下のような修正が行われています。 - Requestオブジェクトに任意のHTTPメソッド名を使用でき...


この記事では、PHPでHttp通信を行うためのコンポーネントである、Guzzleを使うための手順を説明します。PHPに慣れていない人のために、PHPのパッケージマネージャであるcomposerのインストールから説明しています。 ### 確認環境環境のインストール 今...


PHPのプログラムを実行するとUnexpected T_STRINGエラーが出る場合があります。 このエラーが出た場合にチェックするポイントを説明します。 ## エラーが出た場所を確認する 以下のようにエラーが出るので、まずはこのエラーメッセージよりエラー...


PHPのSlim3 Frameworkでcookieを管理するためのクラスです。 stackoverflowにあったコードを元に一部改修してます。 https://stackoverflow.com/questions/35257522/slim-3-framework-cookies ```language-php


Slim3 FrameworkでPDOを使用したDBアクセスを行いたい場合があります。 Slim3では、システム全体で使用するオブジェクトの管理をDIコンテナに任せることができる為、DIコンテナ経由でPDOオブジェクトの取得を行う方がスマートです。 下記は、PDOオブ...


PHPのマイクロフレームワークである、Slim3 Frameworkでクライアントから渡された、GET/POSTパラメータを受け取る方法はいくつかの方法があります。 まずは以下の方法で、すべてのパラメータを配列として取得できます。 ```language-php $paramValue ...


[PHP]Slim3でリダイレクトを行う

2017年8月15日 | カテゴリ: SlimFramework
PHPのSlim3 Frameworkで302リダイレクトを行いたい場合があります。 Slim3でリダイレクトを行うときは、下記のように$response->withRedirect()メソッドを利用すればよいです。 ``` language-php use \Psr\Http\Message\ServerRequestInterface as Re...


[PHP]arrayをXMLに変換する関数

2017年8月15日 | カテゴリ: PHP
PHPでarrayをXMLを調べていたところ、意外と探せない。 PEARのXML/Serializerライブラリを使うのはさすがにレガシーすぎるので、stackoverflowで見つけたSimpleXMLElementクラスを利用したものを使うことにしました。下記Q/Aの回答に提示されていたコー...


Slim Frameworkで応答データをjsonp形式で返したい場合は、下記のようにすればよいです。jsonpのcallback関数名は、通常クライアントから指定してもらうことが多いです。 ```language-php $app->get('/', function (Request $request, Response $respons...


SlimFrameworkでは、スクリプトの途中でエラーが出たとき以下のメッセージを画面に表示するだけで、エラーのスタックトレースなど詳細を画面に表示しません。 ```language-bash Slim Application Error A website error has occurred. Sorry for the te...


PHPを使ったプログラムで、簡単なWebAPIを実装したい場合があります。 小さなWebAPIサーバなど、シンプルなサービスを実装する時にSlim Frameworkのようなマイクロフレームワークは助けになりますが、クライアントの認証がネックになることがあります。...


phpからyamlファイルを読む機会があったのですが、symfony/yamlパッケージを使ってみたら便利でした。 パッケージ名に"symfony"とついていますが、symfonyフレームワークを使わなくても、このパッケージだけ単独で利用できます。 (さらに…)


PHPの通信ライブラリであるGuzzleHttpで通信の送受信内容をデバッグしたい場合があります。 デバッグ出力するためには、get()やpost()など通信実行のメソッドの第二引数に、'debug'=>trueのパラメータを追加すればよいです。 (さらに…)


PHPでComposerといえばパッケージの依存性管理を行うためのツールですが、パッケージ管理以外にオートロードの機能も備えています。 今回はcomposerを使って、何も依存パッケージを利用せず、オートロードの機能だけ利用したプログラムを作ってみます。...


PHPでもrange()関数を使ってみよう

2017年8月1日 | カテゴリ: PHP
pythonでは一定の回数ループさせたり、一定の範囲の数列を扱うために、range()関数があります。 pythonのプログラムでは頻繁に使われる便利な関数なのですが、実はPHPにもpythonと同様、range関数が標準で用意されています。 今回はrange関数を使っ...


PHPでは、define()関数を使用して、定数を作ることが可能です。 定数を切っておくと便利なのですが、定義の内容はシステム全体に及ぶため影響範囲を調べ辛いというデメリットもあります。 古くからあるアプリを保守する場合は、そもそも、何のdefine定...


PHPで利用できるマイクロフレームワークの一つに、Slim Frameworkというものがあります。今回は、Slim Frameworkで、302リダイレクトを行う方法を説明します。 Slim Frameworkでは、HTTPのリクエスト、レスポンスの情報をPSR-7の規格に準じた形で実装し...


最近のモダンなPHPプログラムでは、エラー処理を行う際に、try-catchを利用した例外処理で対応する場合が多いです。 全てのプログラムを自作する場合は、全てのエラーを例外として統一的に扱うことができます。ですが、古いライブラリなどを利用する場...


PHPでは、XDebugを利用することで、ステップ実行などが行えますが、一方で処理が遅くなるデメリットがあります。 プログラムの特定の処理で、デバッグを行う意図はないけれども、XDebugのせいで非常に遅くなる場合、プログラムからXDebugを無効化できます...