PHP

PhpStorm 7 で SSH 経由で PHPUnit を実行する

下記の記事によると PhpStorm 8 では SSH 経由で PHPUnit が実行できるようです。 Vagrantユーザに朗報!PhpStorm8ではPHPUnitをSSH経由で実行できる ホストが Windows で開発環境の VM が Linux(CentOS) なわたしは PhpStorm から PHPUnit が実行できるよう…

ストリームラッパーを使って素の PHP で自動エスケープ

PHP

素の PHP をテンプレートとして使うフレームワークは今でも結構あるようです。 素の PHP をテンプレートに使う、というのがどういうことかというと、簡単な例ですが次のようなものです。 index.php <html> <head> <meta charset="utf-8"> <title></title> </head> <body> Hello </body></html>

Zend Framework 2 で Smarty を使うためのモジュール

そういえばだいぶ前に Zend Framework 2 で Smarty を使うためのモジュールを作りました。 ngyuki/zf2-smarty なお、ZfcTwig を大いに参考にしました。 最初に作ったのは1年ぐらい前だったと思います。その当時に GitHub とかで同じようなものを探してみた…

PHP のクラス定数のちょっと奇妙な話

PHP

このコードは Notice なく実行できる。よく考えると奇妙じゃない?

uopz 拡張で DI っぽいことしてみる

PHP

opcache のオプションを確認するために PHP のマニュアルを見ていたら uopz という面白そうな拡張を見つけたので試してみました。 PHP: uopz - Manual PECL :: Package :: uopz krakjoe/uopz インストール Linux な人は pecl でインストールできます。 $ pec…

mysql_use_result と Server Sent Events でデータをストリーム的にブラウザに返す

まず下記のような手順で 1000 万件のレコードを持つテーブルを作ります。 MySQL に大量のデータを手っ取り早く挿入する - Qiita $ mysql test -e " create table t ( id int not null primary key, str text not null ) " $ seq 10000000 | mysql test -e " …

PHP の FTP 関数のクソい動作

PHP

2年ぐらい前に書いてたネタを発掘したのでポスト、2年たってもクソいものはクソいです。 ある環境の PHP(5.3.2) の FTP 関数で、パッシブモードを指定しているはずなのに FTP サーバのログに PORT コマンドが残っていることがありました。 PHP の FTP 関数…

phpenv 環境で composer global でパッケージをバージョン別にインストールするプラグイン

PHP

Composer とても便利ですよね。 composer global require を使えばユーザーグローバルにもインストールできるので、phpunit などのインストールに pear の代わりに使えます。 PHP - composer global - Qiita がしかし、phpenv で複数の php を切り替えられる…

OpenShift Online に CandyCane をデプロイする

前回 OpenShift Online で PHP を使ってみましたが、無料枠で MySQL も使えるので試しに CandyCane をデプロイしてみました。 なお、CakePHP も CandyCane もまともに触ったこと無いので色々おかしいかもしれませんがご了承ください。 手順 前回と同じ手順で…

RedHat OpenShift で PHP を使う

はじめに RedHat の PaaS である OpenShift Online を触ってみました。 OpenShift へのサインアップはだいぶ前にやっていたので、サインアップの方法やドメインの登録、公開鍵の登録、などの手順はもう忘れました。 多分下記ページの右上の「SIGN UP」から見…

Google App Engine で PHP を使う

昨年の 10 月ごろに Google App Engine for PHP がオープンになったらしいので触ってみました。 SDK のインストール まずはローカルでアプリを実行したり Google App Engine へデプロイするために必要な SDK をインストールします。 Python 2.7 普段使ってい…

PHPUnit Selenium2 で phpunit.xml にリスナー指定でスクリーンショットを取得

PHP

下記の記事を見て PHPUnit_Extensions_Selenium2TestCase_ScreenshotListener はリスナーなので phpunit.xml で指定した方が良いかと思って試しました。 PHPUnit Selenium2で失敗時にスクリーンショットを取得する方法 — A Day in Serenity (Reloaded) — PHP…

Composer が PSR-4 に対応していた

PHP

Composer が PSR-4 に対応していたので試してみました。 PSR-4 - Composer PSR-0 と PSR-4 PSR-4 はオートローダーに関する規約で PSR-0 を置き換えるものです。 PSR-0 PSR-4 ざっくり PSR-0 と比べると次のような違いがあります。 クラス名に含まれるアンダ…

PHP の E_RECOVERABLE_ERROR エラーレベル

PHP

PHP Advent Calendar 2013 in Adventar の24日目です。 PHP は set_error_handler で↓のようにエラーをハンドリングできます。

Visual Studio Express 2013 で PHP をステップ実行する

PHP

PHP Advent Calendar 2013 in Adventar の20日目です。 今日は IDE を使って PHP をステップ実行してみたいと思います。 Eclipse PDT? PHPStorm? いいえ、そういうのは使いません。 使うのは↓コレです。PHP のスクリプトではなく PHP そのものをステップ実…

PHP の Windows 版でのみ発生する is_dir の奇妙な現象

PHP

PHP Advent Calendar 2013 in Adventar の16日目です。 下記のコード、Windows で実行するとどうなると思いますか?

PHP の参照のあれ

PHP

PHP の参照のあれ PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ もっと単純にすると次の結果を比べると判りやすい。

PHP と Grunt で ブラウザのアドオンを使わずに LiveReload する

PHP Advent Calendar 2013 in Adventar の13日目です。 前日は @Mankin_jp さんの PHP 〜5.5の入り口として〜 便利なパスワードハッシュ関数を使おう! でした。 ちなみにまだ 5.4 な人は password-compat を使うといいと思います。私はまだメインが 5.4 な…

ファイルの更新を監視してコマンドを実行するワンライナー

phpunit を実行させるために Grunt を使いましたが・・・ PHP 開発でも Grunt を使う - ngの日記 まあファイルの更新を監視して phpunit(に限らず任意のコマンド)を実行するだけならワンライナーです。 $ inotifywait -e create,delete,modify,move -mr sr…

PHP 開発でも Grunt を使う

PHP Advent Calendar 2013 in Adventar の3日目です。 前日は @matsubo さんの コピペで出来るComposer導入 でした。Composer、私も使ってます。 Grunt とは Node.js で作られた色々な作業を自動化するためのツールです。 普通は Node.js での開発や js と…

クロージャーの static 変数はインスタンス変数なのか?

PHP

次のコードを実行すると、

Zend Framework 2 でテストごとにDB接続してコネクションが枯渇する

はじめに この記事 の続きです。 Zend Framework 1 で発生した、テストの実行時にDBのコネクションを使い果たしてしまう問題は Zend Framework 2 でも同じように発生します。 この問題に気づいたのは Zend Framework 2 のチュートリアル で Album モジュール…

Zend Framework 1 でテストごとにDB接続してコネクションが枯渇する

はじめに 最近 Qiita に↓このようなものを投稿しましたが、どちらも Zend Framework 2 を使っていて気づいたものです。 PHPUnit の TestCase のメンバはテストが完了するまで解放されない - Qiita [キータ] PHP - SPLのコンテナクラスで循環参照するとGCで回…

phpenv を Windows の msysgit で動かす

PHP

phpenv を Windows の msysgit で動かしてみました。 ただし php-build は使わないので PHP そのもののインストールは手動です・・・単にバージョンを切り替えるだけです。 なお、全ての作業は msysgit の bash で行います。 readlink まずは readlink コマ…

Zend Framework 2 の ZendDeveloperTools で GitHub API の 403 エラーが表示される

Zend Framework 2.1.5 でデバッグツールバー(ZendDeveloperTools)を入れてみたところ、次のようなエラーが表示されました。 Warning: file_get_contents(https://api.github.com/repos/zendframework/zf2/git/refs/tags/release-): failed to open stream:…

プロキシ環境下で composer でインストール出来なくなった(HTTP/1.0 400 Bad Request)

PHP

なぜか自社の社内から zf2 や phpunit が composer でインストール出来ない・・・少し前まで出来ていたはずなのに $ cat composer.json { "require": { "zendframework/zendframework": ">2.1.3" } } $ php composer.phar install -vvv Downloading composer…

SIGCHLD を SIG_IGN すると mail 関数が false を返す

PHP

以下のコードを実行すると mail 関数が false を返します。

PHP vld を使ってみた

PHP

今月に入ってから 1 回もブログを書いていなかったのでわりとどうでもいい小ネタを。 はじめに PHP vld を使うと opcode が簡単に表示できて便利です。 PECL :: Package :: vld PHP vld インストール - yoyaのメモ インストール方法とか使い方はリンク先参照…

php 5.3 の Cannot use string offset as an array の詳細

PHP

Qiita に投稿した内容ですが、次のコードは php 5.3 と 5.4 で結果が異なります。 $str = "hoge"; var_dump($str[0][0]); 5.4 の場合 string(1) "h" 5.3 の場合 Fatal error: Cannot use string offset as an array もっと調べた php 5.3 では $str[0] のよ…

PHP のシグナルハンドラのいろいろ

PHP

ここ数年、PHP でシグナルを使う機会が多かったので、気づいた点などを整理してみます。 本当のシグナルハンドラと PHP のシグナルハンドラ pcntl_signal() で登録する PHP のシグナルハンドラは、本当の意味でのシグナルハンドラではありません。なので、シ…