2012-03-02 2 views
3

Из того, что я понимаю, используя что-то вроде require_once, по существу будет копировать и вставлять код из одного файла в другой, как если бы он был в первом файле изначально. Значение, если я должен был сделать что-то вроде этого было бы действительнымИспользование require_once внутри метода

foo.php

<?php 
require_once("bar.php"); 
?> 

bar.php

<?php 
print "Hello World!" 
?> 

работает php foo.php будет только выход "Hello World!"

Теперь мой вопрос заключается в том, если я включил в метод require_once, будет ли загруженный файл загружаться, когда s cript загружается или только при вызове метода ?. И если это только при вызове метода, есть ли какое-либо выигрышное преимущество. Или это было бы так же, как если бы я сохранил весь код в один большой файл.

Я в основном спрашиваю, как я создал файл API, который обрабатывает большое количество вызовов, и я не хочу упрощать этот файл. (Я знаю, что могу сделать это просто создавать отдельные классы, но я думал, что это было бы хорошо знать)

(Извините, если это уже было предложено, я не был уверен, что искать)

ответ

1

1) Только при вызове метода.

2) Я бы предположил, что нагрузка «на лету» неосязаема, поэтому интерпретатору PHP не нужно разбирать дополнительный код, если он не используется.

+0

Re: 2. Это память против вопроса производительности (особенно при использовании кэша опкод) , Загрузка кода по требованию savs-памяти, но требует большей обработки и сложнее кэшировать. – Mchl

+0

Спасибо, вот что мне нужно знать. Я не думал о том, как будет работать кеширование. Благодарю. –

2

Включается только при вызове метода, но вы посмотрели autoloading?

0

Обычно я использую include ('bar.php'); я использую его, когда я использую информацию о базе данных, у меня есть файл с именем database.php с информацией о входе в систему, и когда файл загружается, он вызывает его прямо. Мне не нужно вызывать функцию. Он может быть не самым эффективным и эффективным, но он работает для меня. Вы также можете использовать include_once ... include в основном делает то, что вы хотите, он копирует код по существу ..

0

Как уже упоминалось, да, он включен точно в срок.

Однако следите за определениями переменных (require() ing из метода разрешает доступ только к локальным переменным в области этого метода).

Имейте в виду, вы можете также возвращать значения (то есть строки) из включаемого файла, а также выходной буфер с ob_start() т.д.

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