PHP

PHP-CS-Fixerを取り入れてみた

既にCI上では導入されていて、書き方が悪いと差分付きで指摘してくれるのだが、 差分を見てもどこを直せば良いのか分かりづらかったので、重い腰を上げて ローカル環境にも入れてみた次第。 homebrewでcomposerをインストール $ brew search composer $ brew…

重み付けによる抽選ロジック

PHP

$r) { // 重みが…

大文字小文字変換

PHP

PHPUnitのアップグレードやアンインストール等

PHP

sudo vim /etc/php.ini 以下を追記 include_path = ".:/php/includes:/usr/lib/php/pear"sudo pear upgrade PEAR pear config-set auto_discover 1 sudo pear install pear.phpunit.de/PHPUnit-3.7.32 phpunit -v PHPUnit 4.0.11 by Sebastian Bergmann. ア…

DirectoryIteratorの活用

PHP

主な仕様 PHP: DirectoryIterator - Manual 再帰的にディレクトリを削除する is…

PHPあれこれ

PHP

ファイルダウンロード機能

テストコードあれこれ

Composerを使ってPHPUnitをインストールする composer.jsonの中身 "require-dev": { "phpunit/phpunit": "3.7.*" } composerのインストールコマンドを叩いてPHPUnitをインストール $ ./composer.phar install --dev PHPUnitがインストールされたかどうかを確…

メソッド名を可変にする

PHP

渡された変数によってメソッド名を書き換えて実行したい場合、例えば、 findItems() findHogeItems() findGehoItems() …という三種類のメソッドを使い分けたいときは、以下の様な方法でメソッド名を可変にして実行することができる。 function executeByStat…

GithubとComposer管理

Githubに追加したプロジェクトをComposerで管理する。 GithubとPackagistとの連携 Githubのリポジトリ毎の設定画面 Composerのダウンロード curl -s http://getcomposer.org/installer | php composer.jsonの作成 Packagistでアカウント作成 https://packagi…

日付関数で遊ぶ

PHP

date()を使ったあれこれ

連想配列の並べ替え集

PHP

ランダムに並べ替える $words = array( array( ‘id’ => 0, ‘name’ => ‘労’, ), array( ‘id’ => 1, ‘name’ => ‘働’, ), array( ‘id’ => 2, ‘name’ => ‘審’, ), array( ‘id’ => 3, ‘name’ => ‘判’, ), ); // idの配列を作る $ids = range(0, count($words)-1);…

ランダムに複数の抽出結果を取得する

CakePHP2で、 ‘order’ => ‘rand()’ として検索結果をランダム取得しようとしていたが、生成されたSELECT文には ORDER BY rand() ASC と指定されていて、更にEXPLAINで調べてみたところ、見事にExtraの項目に、 Using where; Using temporary; Using file sor…

セレクトボックスの"onChange"

PHP

セレクトボックスで「項目選択と同時にPOST送信する」のような挙動を実装する場合。 <form action="<?php echo $_SERVER['REQUEST_URI'] ?>" method='post'> <select name=“mySelectBox” onChange="this.form.submit()"> </select></form>

GithubへのPush

sshでGitにつなげるかどうかの確認 実際にpushしたファイル。 https://github.com/hchuno/php_product/blob/master/paiza_hackason01.php

Macで作成したCSVファイルの読み込みがうまくいかない件

PHP

現象 Mac環境で以下のような二行のレコードからなるCSVファイルを作成。 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 これをfgetcsv()で読み…

"There is no active transaction"

現象 対処法 補足 例外発生の原因 routing.ymlで未定義のURLにリダイレクトさせようとしていた

PHP5.4のビルトインWEBサーバ&Symfony2

以下のSymfonyコマンドを打てばビルトインWEBサーバが起動。 $ php app/console server:run Apacheを入れなくてもアプリが動かせる!

Symfony2開発環境構築 -PHPUnit編-

PHPUnitのインストール その前にPEARをインストールする。 $ chmod -R ug+w /usr/local/Cellar/php54/5.4.15/lib/php$ pear config-set php_ini /usr/local/etc/php/5.4/php.ini $ pear config-set auto_discover 1$ pear install pear.phpunit.de/PHPUnit$ …

database.phpとDB接続

現象 CodeIginiterからデータベースへの接続ができない… config/database.phpで $db['default']['autoinit'] = TRUE; とすると以下のエラー。 $db['default']['autoinit'] = FALSE; とすると、エラーは出ないが $this->load->database(); の戻り値がFALSE。 …

data-load時の文字化け対策

synfony 1.4で 「symfony doctrine:data-load をしたら文字化けする」 と同僚に言われ。 問題はテーブル生成時にUTF8を扱うようになっていないためらしい。config/databases.ymlのデータベース接続定義で以下を追加する。 encoding: utf8 attributes: defaul…

PHP

date関数やstrtotime関数を使ったときにWarningが出る問題

Warningの内容 strtotimeの場合 Warning: strtotime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those me…

instanceofを使いましょう

PHP

PHP Strict Standards: is_a(): Deprecated. Please use the instanceof operator in /home/chuno/mixi-mychuno/apps/mychuno/lib/myChuno.action.php on line 24

limeテストでテンプレート内の要素をチェックする

「divタグ等にidを振ってそれが存在するかどうか」が基本方針。

配列の差分をとる関数array_diff()

PHP

片方の配列には含まれているが、もう片方の配列には含まれていない要素を抽出したい場合に使う。 http://php.net/manual/ja/function.array-diff.php

真偽値を反転して反転して反転して…

PHP

こんな書き方もできるんだなーということを知った。 $isBikkuri = false; var_dump($isBikkuri); var_dump(!$isBikkuri); var_dump(!!$isBikkuri); var_dump(!!!$isBikkuri); 出力結果は… bool(false) bool(true) bool(false) bool(true)

json_decodeでハマる

PHP

最近、以下の関数を使って、データをJSON形式で扱うことが増えてきたが… json_encode() json_decode() ある値をjson_decodeでJSON形式から戻して配列として扱おうとしたら、以下のエラーが発生してハマってしまった。 PHP Fatal error: Cannot use object of…

Only variables can be passed by reference

PHP

原因 参照渡しを要求するメソッドの引数に直接、値を渡してしまうと発生。 解決策 渡したい値を一旦変数に格納 その変数を引数としてメソッドに渡す

乱数の生成に使う関数

PHP

rand()かなと思っていたら、今だとmt_rand()というのがあって、こちらのほうが処理が高速で、かつ返ってくる値も正確とのこと。 ※そういえば、randの時って偏った数値ばかり返ってきてた気がする… // 1から100の中からランダムに数字を返す $randomNum = mt_…

PHPを認識させるための設定

Apache2を起動 アップルメニュー→System Preference→Sharing→Web Sharingをチェック /usr/apache2/apachectlを編集 以下の現象が発生してApacheの再起動等ができなかった /usr/sbin/apachectl: line 82: ulimit: open files: cannot modify limit: Invalid a…