この問題は非常に単純です、確かに、私は答えがわかりません。
別のクラスを拡張するクラスがあります。親クラスの機能を使用するためにparent::methodを試してみると、「未定義のメソッド'parentClass' :: getid()の呼び出し」が表示されます。
その機能は、メソッド名を強制的に小文字にすることです。上記の例から、parent :: getId()はparent :: getid();に強制されています。
なぜなのかわかりませんか?何かご意見は?
コード例
Class myClass extends OtherClass {
public function getProductList() {
//does other stuff
return parent::getId();
}
}
parent :: getId()の代わりにparent :: getid()を実行しようとしました。getId()は、データベースモデルクラスである親クラスの単なるゲッターです。
また、ローカルで動作しました。これが発生したのは、ベータプッシュの後でのみです。
アップデート
parent::getId()
__call
メソッドを呼び出します
/**
* @method __call
* @public
* @brief Facilitates the magic getters and setters.
* @description
* Allows for the use of getters and setters for accessing data. An exception will be thrown for
* any call that is not either already defined or is not a getter or setter for a member of the
* internal data array.
* @example
* class MyCodeModelUser extends TruDatabaseModel {
* ...
* protected $data = array(
* 'id' => null,
* 'name' => null
* );
* ...
* }
*
* ...
*
* $user->getId(); //gets the id
* $user->setId(2); //sets the id
* $user->setDateOfBirth('1/1/1980'); //throws an undefined method exception
*/
public function __call ($function, $arguments) {
$original = $function;
$function = strtolower(preg_replace('/(?<=[a-z])([A-Z])/', '_$1', $function));
$prefix = substr($function, 0, 4);
if ($prefix == 'get_' || $prefix == 'set_') {
$key = substr($function, 4);
if (array_key_exists($key, $this->data)) {
if ($prefix == 'get_') {
return $this->data[$key];
} else {
$this->data[$key] = $arguments[0];
return;
}
}
}
$this->tru->error->throwException(array(
'type' => 'database.model',
'dependency' => array(
'basic',
'database'
)
), 'Call to undefined method '.get_class($this).'::'.$original.'()');
}
PHP.netで同じエラーをスローする例を次に示します。http://www.php.net/manual/en/keyword.parent.php#91315