ECCUBEでプラグインアップデートでエラー

ECCUBE v.2.13.3でプラグインの更新時

Warning(E_WARNING): unlink(/vagrant/sample/data/downloads/tmp/plugin_install/DE-0002_20141208.tar.gz): No such file or directory on [/vagrant/sample/data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php(938)] from 10.0.2.2

と
data/logs/error.log
にエラーが..

これで直りました

$ mkdir data/downloads/tmp/plugin_install

plugin_installディレクトリがなかったみたいです

phpで配列が存在するかのチェック

配列が存在するか調べるときに

if (isset($var['p'])) {
  // 存在するときの処理
}

としますが

$var['p'] = null;
var_dump(isset($var['p']));
// false

と null が入っていると false になってしまいます

配列のキーが存在するかをみて

if (array_key_exists('p', $var)) {
  // キー存在するときの処理
}

としてあげたら意図した処理になります

Cakephpのテスト時にSessionの値が取れない

Cakephp 2.5.3でコントローラーのテストのとき

$this->testAction('/Sample/save', ['return' => 'vars']);
$flash = CakeSession::read('Message.flash');
$this->assertEquals('保存しました', $flash);

とすると CakeSession::read(‘Message.flash’) がとれませんでした

$this->testAction('/Sample/save');
$flash = CakeSession::read('Message.flash');
$this->assertEquals('保存しました', $flash);

として flash をとってやって

$this->vars
でパラメータは取ればとりあえず解決

詳しく理解しないとですが、ここまでで

phpで配列のキーの先頭を取得する

phpで配列のキーの先頭をとってみました

まず関数を調べる

PHP: current – Manual

配列内の現在の要素を返す

PHP: reset – Manual

配列の内部ポインタを先頭の要素にセットする
返り値に先頭の値が返ってきます

$list = [
  'A' => 'a',                                                                                         
  'B' => 'b',
  'C' => 'c',                                                                                         
];
var_dump(current($list)); 
// string(1) "a" 
var_dump(reset($list));                                                                               
// string(1) "a"

といった感じで、配列を宣言しただけだと、同じ結果が返ります

PHP: array_keys – Manual

配列のキーすべて、あるいはその一部を返す

$list = [
  'A' => 'a',                                                                                         
  'B' => 'b',
  'C' => 'c',                                                                                         
];
var_dump(array_keys($list));
/*
array(3) {
  [0] =>
  string(1) "A" 
  [1] =>
  string(1) "B" 
  [2] =>
  string(1) "C" 
}
*/

とキーが配列で返ります

組み合わせて

$list = [
  'A' => 'a',                                                                                         
  'B' => 'b',
  'C' => 'c',                                                                                         
];
$keys = array_keys($list);                                                                             
var_dump(reset($keys)); 
// string(1) "A" 

これがいいかなと思っています