--> -->

skimemo


Laravel のバックアップソース(No.2)

* 今日のLaravel [#ta529ca4]
これは、Laravelを使った開発の中で気づいた事を毎日一つメモしていくものです。
----
** 2018/12/7 php5とphp7での配列を使ったメソッド呼び出しの挙動の違い [#bfdade1e]
以下のコードにおいて、php5とphp7で挙動の違いがありました。
#code(php){{
<?php

class test {

	public function __construct() {
		echo "test!\n";
		$method[0] = "test2";
		$this->$method[0]();
	}

	private function test2() {
		echo "test2\n";
	}

}

new test();
}}
- php5(5.6.30)の場合
 >php test.php
 test!
 test2
- php7(7.1.24)の場合
 >php test.php
 test!
 PHP Notice:  Array to string conversion in F:\test.php on line 8
 PHP Stack trace:
 PHP   1. {main}() F:\test.php:0
 PHP   2. test->__construct() F:\test.php:17
         :
 PHP Fatal error:  Uncaught Error: Function name must be a string in F:\test.php:8
どうやら変数が配列の場合、php7だと「$this->$method」で一旦区切って解釈するようです。~
~
解決方法は以下の通り。
 -	$this->$method[0]();
 +	$this->{$method[0]}();
これでphp5でも7でも動作するコードになりました。