2010-10-07 3 views
0

Я использую Zend Framework 1.10 VZend Framework: Как вызвать пользовательскую функцию, созданную в бутстрапе?

Я создал пользовательскую функцию в файле загрузки:

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 

    public function init(){ } 

    public function helloworld(){ echo 'hello';} 
} 
?> 

Как вызвать функцию HelloWorld() от действий в контроллере Index?

Любая помощь будет оценена по достоинству.

Благодаря

ответ

0

Любой может вызывать функцию в классе начальной загрузки без каких-либо объектов класса. Bootstrap автоматически вызывает пользовательские функции, которые имеют ключевое слово _init в качестве префикса. Такие, как:

public function _initIndia() { 
    echo 'Proud to be an Indian'; 
} 
5
$this->getFrontController()->getParam('bootstrap')->helloworld(); 

должен работать. Но я не могу думать о какой-либо причине, почему вы захотите это сделать - загрузочный файл предназначен для инициализации ресурсов приложения, его работа выполняется задолго до того, как задействованы контроллеры. Возможно, все, что вы делаете в методе, должно быть ресурсом или плагином контроллера?

+0

Тогда в чем разница между файлом начальной загрузки и файл index.php, который находится под общей папке, которую я нашел под образцом Quickstart кода на официальном сайте ZEND? – Phantom007

+0

Оба являются частью процесса инициализации. Index.php вызывает класс bootstrap. –

+0

Я согласен с Тимом. Index.php реализует шаблон Front Controller (http://en.wikipedia.org/wiki/Front_Controller_pattern) в том, что он является центральной точкой, которая обрабатывает все запросы и ищет после того, как зависимые процессы для приложения будут работать эффективно - например, самонастройки. Бутстрап, однако, более конкретен тем, что он заботится о инициализации ресурсов для приложения, таких как маршрутизация, кеширование, навигация и разбиение на страницы; среди других вещей. –

-1

Любые публичные функции, которые вы создаете в начальной загрузке, которые начинаются с _init, будут автоматически вызываться при загрузке кода. Например:

public function _initHelloWorld() { echo 'hello'; } 
+0

Вопрос о функции, называемой helloworld, а не _initHelloWorld, поэтому OP, похоже, знает, что это так. – jblue

+0

И, кстати, его не нужно публично называть автоматически. Защищенные методы вызываются автоматически – dade

Смежные вопросы