Это составляет приблизительно 7 МБ стекового пространства. В Visual Studio Вы использовали бы/STACK:###,### для отражения размера, который Вы хотите. Если Вы истинно хотите огромный стек (могло бы быть серьезное основание, с помощью LISP или чего-то :), даже "куча" ограничена small'sh выделениями прежде, чем вынудить Вас использовать VirtualAlloc), можно также хотеть установить PE для создания с/LARGEADDRESSAAWARE (Компоновщик Visual Studio снова), но заголовок PE этого configure, чтобы позволить скомпилированному двоичному файлу обращаться к полным 4 ГБ 32'bit адресное пространство (при выполнении в WOW64). При создании истинно значительных двоичных файлов необходимо было бы также обычно настраивать/bigobj как дополнительный компоновщик пара-Мертер.
И если Вам все еще нужно больше пространства, можно радикально нарушить конвенцию при помощи чего-то средство моделирования к (снова ссылка MSVC) / слияние: который позволит Вам упаковывать один раздел в другого, таким образом, можно будет использовать каждый байт для единственного общего раздела кода/данных. Естественно необходимо было бы также настроить полномочия РАЗДЕЛОВ в файле определения или с #pgrama.
Макет представляет собой представление, поэтому метод присвоения переменных такой же. В вашем примере, если бы вы повторили $ this-> что угодно в вашем макете, вы должны увидеть тот же результат.
Одна из распространенных проблем заключается в том, как назначить переменные, которые вы используете на каждой странице, в свой макет, как вы бы не ' Я не хочу дублировать код в каждом действии контроллера. Одним из решений этого является создание плагина, который назначает эти данные перед визуализацией макета. Например:
<?php
class My_Layout_Plugin extends Zend_Controller_Plugin_Abstract
{
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
$view->whatever = 'foo';
}
}
затем зарегистрируйте этот плагин на переднем контроллере, например
Zend_Controller_Front :: getInstance () -> registerPlugin (new My_Layout_Plugin ());
Я реализовал базовый контроллер, который расширяют все остальные контроллеры.
Итак, у меня есть контроллер ...
<?php
class BaseController extends Zend_Controller_Action
{
public function init()
{
$this->view->foo = "bar";
}
}
и в макете и / или представлении
<?= $this->foo ?>
Без использования помощников или подключаемых модулей выполните:
Zend_Layout::getMvcInstance()->assign('whatever', 'foo');
После этого вы можете использовать следующее в своем макете:
<?php echo $this->layout()->whatever; ?>
Это напечатает «foo».