Знаю, что это старый пост - но наткнулся на него в поисках решения.
Это мое окончательное решение:
У меня есть абстрактный класс, который расширяет мои классы и который выдает ошибку по волшебству __get и __set.
Это противно - но это доставляет удовольствие!
Это похоже на предложения, приведенные выше, но также добавило 'final' к объявлению метода, чтобы люди не перезаписывали его.
Мы также используем сниффер кода, чтобы поймать их - но я хотел получить мои сообщения об ошибках «живыми» при кодировании, вместо того, чтобы ждать отчета от сниффера.
(Также люди могут игнорировать отчеты о нюхании!)
Пример кода ниже
<?php
/**
* Abstract
* Some default Abstract functions that everything should extend
*
* @package example
* @subpackage lib
*/
/**
* Class mh_abstract
* Some default MH Abstract functions that everything should extend
*
* @package example
* @subpackage lib
*/
abstract class lib_abstract
{
/**
* Throws an error if php magic set is called
*
* @param string $key
* @param string|object $value
*
* @throws Exception When trying to set a new class property
*/
final public function __set($key, $value)
{
// get if the thing we are trying to set is a object
if(is_object($value))
{
// if so let's just report it's name, not the full object
$value = 'object:'.get_class($value);
}
// throw the error!
throw new mh_lib_error_dev_unknownClassProperty('Tried to set new property '.$key.' with value '.$value);
}
/**
* Throws an error if php magic get is called
*
* @param string $key
*
* @throws Exception When trying to set a new class property
*/
final public function __get($key)
{
// throw the error!
throw new mh_lib_error_dev_unknownClassProperty('Tried to get new property '.$key);
}
}