Варианты Вы описали, но к сожалению они работают если у Вас свой сервер или дорогой хостинг с возможностью влиять на правила php.ini через htaccess.
Нет, я не прошу готового решения, просто я думал, что здесь знают как влиять на Yii в подобной ситуации.
Остается сделать такой вывод: придется самому разбираться в исходниках Yii и учить его новому.
Не переживайте, ответ вреда не принесет, наоборот очень жду его:
Еще раз прошу, подскажите пример с переопределением CApplication::handleError, чтобы я смог игнорировать notice. Если не хотите писать сюда, то пожалуйста напишите личным сообщением, заранее спасибо.
действительно отменяют слежку за Notice, а возникший у меня:
Fatal error: Uncaught exception 'CException' with message 'Property "URL.pages" is not defined.
не относится к Notice в том смысле, какой придал бы ей стандартный подход PHP.
Yii выдает Fatal error потому, что у него в CComponent есть метод-проверки __get, который проверяет наличие изначально объявленных свойств в Вашем классе (это по мнению Yii обязательно).
Таким образом, у меня новый вопрос - как сказать Yii, чтобы он этого не делал? Другими словами, как сказать Yii - не проверяй наличие изначальное объявление свойств в классе?
Пожалуйста, если не знаете ответа, не давайте совет "Привыкайте писать нормальный код", заранее спасибо за понимание.
Вы привели пример переопределения свойства своего класса, я просил другое. Извините, наверное недостаточно понятно высказался. Поэтому еще раз - подскажите, как правильно переопределить метод __get класса CComponent. Хочется избавить его от:
throw new CException(Yii::t('yii','Property "{class}.{property}" is not defined.', array('{class}'=>get_class($this), '{property}'=>$name)));
/**
* Sets value of a component property.
* Do not call this method. This is a PHP magic method that we override
* to allow using the following syntax to set a property or attach an event handler
* <pre>
* $this->propertyName=$value;
* $this->eventName=$callback;
* </pre>
* @param string $name the property name or the event name
* @param mixed $value the property value or callback
* @see __get
*/
public function __set($name,$value)
{
$setter='set'.$name;
if(method_exists($this,$setter))
return $this->$setter($value);
else if(strncasecmp($name,'on',2)===0 && method_exists($this,$name))
{
// duplicating getEventHandlers() here for performance
$name=strtolower($name);
if(!isset($this->_e[$name]))
$this->_e[$name]=new CList;
return $this->_e[$name]->add($value);
}
else if(is_array($this->_m))
{
foreach($this->_m as $object)
{
if($object->getEnabled() && (property_exists($object,$name) || $object->canSetProperty($name)))
return $object->$name=$value;
}
}
}
@smadark - даже капитан очевидность не смог бы дать более конкретный ответ )))
@Lebnik - вы не задумывались о написании своего фреймворка? Без всех недостатков присущих существущим решениям - позволять игнорировать любые ошибки, в том числе фатальные, может даже отсылать разработчику поздравление по почте при обнаружении ошибки…