Унаследованная функция Appneller Kernel :: init () сама по себе устарела, поэтому ее изменение не является жизнеспособным долгосрочным решением.
Вы можете легко переопределить сообщение об ошибке, изменив вызов на Debug :: enable (); и в app / console, и в web / app_dev.php вот так.
Измените
Debug::enable();
на
Debug::enable(E_RECOVERABLE_ERROR & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED, false);
Это оставит все другие сообщения об ошибках в такте при подавлении устаревших предупреждений. И вам вообще не нужно связываться с Ядром.
В общих чертах, значение, присвоенное частью as
оператора with
, будет тем, что будет возвращено __ enter__
метод диспетчера контекста .
На первый взгляд это может немного сбить с толку, но
with babby() as b:
...
не эквивалент
b = babby()
with b:
...
Чтобы понять почему, вот как диспетчер контекста будет реализовано:
class babby(object):
def __enter__(self):
return 'frigth'
def __exit__(self, type, value, tb):
pass
В первом случае имя b
будет привязано к тому, что возвращается из метода __ enter __
диспетчера контекста. Часто это сам диспетчер контекста (например, для файловых объектов), но это не обязательно; в данном случае это строка 'frigth'
, а в вашем случае это курсор базы данных.
Во втором случае b
- это сам объект диспетчера контекста.
class babby(object):
def __enter__(self):
return 'frigth'
def __exit__(self, type, value, tb):
pass
В первом случае имя b
будет привязано к тому, что будет возвращено методом __ enter __
диспетчера контекста. Часто это сам диспетчер контекста (например, для файловых объектов), но это не обязательно; в данном случае это строка 'frigth'
, а в вашем случае это курсор базы данных.
Во втором случае b
- это сам объект диспетчера контекста.
class babby(object):
def __enter__(self):
return 'frigth'
def __exit__(self, type, value, tb):
pass
В первом случае имя b
будет привязано к тому, что будет возвращено методом __ enter __
диспетчера контекста. Часто это сам диспетчер контекста (например, для файловых объектов), но это не обязательно; в данном случае это строка 'frigth'
, а в вашем случае это курсор базы данных.
Во втором случае b
- это сам объект диспетчера контекста.
Оператор with позволяет, например, убедиться, что транзакция запускается и останавливается правильно.
В случае соединений с базой данных в python, я думаю, что естественным является создание курсор в начале оператора with, а затем зафиксировать или откатить транзакцию в конце.
Два предоставленных вами блока идентичны с точки зрения оператора with. Вы также можете добавить as к первому и получить курсор.
Вам нужно проверить, как реализована поддержка with в объекте, с которым вы его используете.
См. http: // docs .python.org / whatsnew / 2.5.html # pep-343-the-with-statement