PHP

【PHP】任意の長さの文字列を生成する。

テストケースとか書いてる時、バリデーションに引っ掛けたくて超長い文字列(65000文字とか)が欲しかったので調べてみた。

冷静に考えてループで作成するのは重すぎるので却下。

■文字列のオフセットを指定して作成

$str = 'a';
$str[99] = 'a';
// 100バイトの文字列が出来上がる

■sprintfを用いて作成

$str = sprintf("%'065501s", 0)
// 65501バイトの文字列が出来上がる

個人的にはsprintfを用いたほうがエレガントで好き。

 

【PHP】文字列の中に指定文字列が何回出現するかを数える。

こんな便利な関数があったことを今更知った。

$text = 'This is a test';
echo substr_count($text, 'is')
// 2

細かい仕様と使い方は公式を参照されたし。

http://php.net/manual/ja/function.substr-count.php

 

【PHP】名前空間とクラスの動的にロードに関する注意点。

例えば名前空間を用いたクラス内から、名前空間が設定されているクラスのインスタンスを動的に生成したい場合、
生成するクラスまでのパスを名前空間を含めてフルパスで指定してやらないとエラーになってしまう。

例)

$className = 'Hoge';

// エラー
new $className();

$nameSpace = '\\Huga\\Piyo\\';

$className = $nameSpace.'Hoge';

// OK
new $className();

と言った感じ。

 

【PHPUnit】のclient->request()メソッドで送信するヘッダーを追加したい際の注意。

PHP側で正しくヘッダーを捕捉させたい場合はヘッダ名に「HTTP_」のプレフィックスをつけてやる必要がある。

例)
X-XSRF-TOKENという名前のヘッダーを送信したい場合。

$this->client->request(
    $method,
    $uri,
    [], // parameters
    [], // files
    ['HTTP_X-XSRF-TOKEN' => $token]
);

こんな感じ。

 

【PHPUnit】はじめてのPHPUnit。

はじめてテスト書くときに参考にしました。

http://qiita.com/imunew/items/39ac9283d030a8c4f9d4

 

【CentOS7】にPHP5.6をインストールする。

リポジトリを追加。

sudo rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/7/x86_64/e/epel-release-7-1.noarch.rpm
sudo rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

パッケージを確認。

yum list --enablerepo=remi --enablerepo=remi-php56 | grep php

インストール。

sudo yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-intl php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

バージョン確認。

php --version

 

【CentOS】PHPのmongoエクステンションをインストールする。

際の手順が公式にわかりやすくまとめられていたのでペタリ。

http://php.net/manual/ja/mongo.installation.php

mongo-php-driverのgitリポジトリは下記。

https://github.com/mongodb/mongo-php-driver

 

【MySQL/PHP】PHPからmysqlに特定のテーブルが存在しているかを確認する。

下記のSQLを実行してリザルトが返ってくるか否かで判定すればOK。

例)
postsテーブルの有無を確認する。

show tables like posts