У меня есть класс с именем DataBoundObject
, который довольно большой.И работает хорошо.Это класс ORM, который я разработал.Одной из его функций является автоматическое выполнение функций setXXX () и getXXX (), поэтому кодирование не требуется.Следующая функция делает это
public function __call($strFunction, $arArguments) {
$strMethodType = substr ( $strFunction, 0, 3 );
$strMethodMember = substr ( $strFunction, 3 );
if(!is_callable(array($this, $strFunction)))
throw new Exception("Function cannot be called!");
switch ($strMethodType) {
case "set" :
return ($this->SetAccessor ( $strMethodMember, $arArguments [0] ));
break;
case "get" :
return ($this->GetAccessor ( $strMethodMember ));
break;
default :
throw new Exception ( "Non existent method call dude!" );
}
return false;
}
Теперь в классе, который получает это, я переопределяю одну функцию следующим образом:
<?php
require_once ('DataBoundObject.php');
/**
* ORM extension of BUBBLES_HOTEL_REVIEWS Tabel
* @author footy
* @copyright Ajitah
*
*/
class reviews extends DataBoundObject {
protected $ReviewID;
//Other codes
private function setReviewID($ReviewID) {
throw new Exception ( "Cannot set the review ID Explicitly" );
}
//Other codes
//Other codes
//Other codes
//Other codes
//Other codes
}
$x = new reviews();
$x->setReviewID(5);
?>
Таким образом, наконец, я создаю новый объект и пытаюсь вызвать setReviewID()
функция, которая является частной.Почему он не генерирует Exception
?Кроме того, is_callable()
возвращает истину!
РЕДАКТИРОВАТЬ
В основном мне нужна помощь, чтобы исправить эту проблему, чтобы она выдавала Exception