2009-09-03 2 views
2

Простой вопрос. Зачем использовать require_once для включения классов, которые вы используете в файле? Например, если я создаю класс, который расширяет Zend_Db_Table_Abstract, я не очень-то нужно иметь это в файле декларации класса:Требуемые классы в библиотеке на основе Zend Framework

require_once "Zend/Db/Table/Select.php"; 

Они включены в автопогрузчика в любом случае. Есть ли выигрыш в производительности для явного объявления «импорта»? Это для модульного тестирования?

ответ

6

Простой ответ: если вы не используете автозагрузчик, функциональность не сломается.

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

Другим преимуществом является то, что он помогает вам увидеть, когда ваши классы становятся зависимыми от слишком многих других классов. Это поможет вам свести ваш coupling к минимуму при проектировании ваших объектов.

Пример из Zend/Db/Table/Select.php

/** 
* @see Zend_Db_Select 
*/ 
require_once 'Zend/Db/Select.php'; 


/** 
* @see Zend_Db_Table_Abstract 
*/ 
require_once 'Zend/Db/Table/Abstract.php'; 
+0

Ой, да, это была опечатка. Хорошо, это имеет смысл. Итак, если, например, я должен был написать отдельный загрузочный файл для реализации Zend_Amf ... если бы это не использовало автозагрузчик, все могло бы сломаться. Отличный ответ. – typeoneerror

+0

Замечание о соединении очень хорошее. После того, как я вернулся и ретроактивно появился в некоторых классах, я определенно заметил, что некоторые из них становятся тяжелыми. Я также заметил, что большая часть Zend Framework сама по себе не требует явных требований. – typeoneerror

+0

Возможно, стоит добавить несколько отчетов в JIRA из требований, которые вы видите в базовом коде ZF. Помогите внести вклад в уже хороший проект – gnarf

0

Вы можете избавиться от этих вызовов в IDE, заменив «require_once» с «// require_once» require_once следует использовать только для загрузки класса. Другое, например, вставка массива из файла, например $file = include "test.php";, не используйте его (или его не нужно использовать).

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