Một số câu hỏi liên quan đến kiến thức cơ bản về Zend Framework 1.9.Ứng dụng Zend/Bootstrapping hoạt động như thế nào?
i theo hướng dẫn quickstart, và về cơ bản, bao gồm bootstrapping,
a. từ index.php:
$ZEND_FRAMEWORK_LIB_PATH = '/appl/ZendFramework-1.9.7/library'; defined('APPLICATION_PATH') || define('APPLICATION_PATH', (realpath(dirname(__FILE__) . '/../application'))); defined('APPLICATION_ENV') || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); set_include_path(implode(PATH_SEPARATOR, array((dirname(dirname(__FILE__)) . '/library'), $ZEND_FRAMEWORK_LIB_PATH, get_include_path(),))); require_once 'Zend/Application.php'; $application = new Zend_Application(APPLICATION_ENV, (APPLICATION_PATH . '/configs/application.ini')); $application->bootstrap()->run();
b. Sau đó, trong Bootstrap.php, tôi có
protected function _initAutoload() { $autoloader = new Zend_Application_Module_Autoloader(array("namespace" => "Default_", "basePath" => dirname(__FILE__),)); return $autoloader; } protected function _initDoctype() { $this->bootstrap("view"); $view = $this->getResource("view"); $view->doctype("XHTML1_STRICT"); }
Đối với một sự khởi đầu, một vài điều tôi không hiểu:
a. Nếu người dùng truy cập trang web không thông qua index.php mặc định, điều đó có nghĩa là bootstrapping (và thực sự, tất cả mã trong index.php bao gồm cài đặt môi trường, v.v. sẽ bị bỏ qua?)
b. Không có nơi nào gọi rõ ràng các phương thức
_initAutoload()
hoặc_initDoctype()
của Bootstrap. Vì vậy, khi nào các phương pháp này ngầm được viện dẫn?c. Vì trong index.php, tôi đã "chuyển" vào tập tin cấu hình
'/configs/application.ini'
tới hàm tạo Zend_Application, có cách nào để lấy các mục cấu hình ở nơi khác không?Trong đơn đăng ký của mình, tôi phải làm việc với các cơ sở dữ liệu khác nhau (vì vậy tôi không thể chỉ sử dụng
resources.db.*
). Vì vậy, trong cùng một tệp application.ini, tôi có, ví dụ:custdb.adapter = "PDO_MYSQL" custdb.params.host = "localhost" custdb.params.username = "username" custdb.params.password = "password" custdb.params.dbname = "custdb"
Cách tốt nhất để quản lý bộ điều hợp DB là gì?
a. Có thể (và nên tôi) tạo ra bộ chuyển đổi DB trong index.php HOẶC Bootstrap.php và lấy nó ở nơi khác khi cần thiết (và làm thế nào)?
b. Hoặc là có thể (và tôi nên) chỉ cần lấy các mục cấu hình ở nơi khác (như thế nào?) Và nhanh chóng các bộ chuyển đổi DB như và khi cần thiết?
Cảm ơn!
Cảm ơn câu trả lời! 2b. Thật không may, Lý thuyết hoạt động khiến tôi bối rối hơn.Trong trường hợp này, nó nói về $ bootstrap-> bootstrap ('foo'); $ bootstrap-> bootstrap (mảng ('foo', 'bar')); $ bootstrap-> bootstrap(); nhưng không có trong số này nằm trong index.php. (Trừ khi $ application-> bootstrap() -> run(); làm tương tự như $ bootstrap-> bootstrap()?) 2c. Vì tôi đã truyền tên tệp cấu hình cho hàm tạo Zend_Application, có cách nào để lấy một cá thể Zend_Config từ ứng dụng $ (để đặt trong sổ đăng ký) thay vì tạo một tệp Zend_Config_Ini mới trên cùng một tệp .ini? –
Ồ, một điều nữa. Như bạn đã nói, mọi yêu cầu đều được chuyển hướng đến index.php. Điều đó có nghĩa là bất kỳ mã nào ở đó (đọc cấu hình, khởi tạo Zend_Application, gọi $ bootstrap.run()) xảy ra lặp đi lặp lại? –
Có. Toàn bộ ứng dụng được khởi động và chạy với mọi yêu cầu. HTTP là giao thức không trạng thái, điều duy nhất tồn tại trên các yêu cầu là $ _SESSION. Nếu bạn lo lắng về hiệu suất, tôi khuyên bạn nên triển khai bộ nhớ cache trang, có thể phục vụ một trang mà không cần quay lên một ứng dụng đầy đủ. –