Каков объем require_once в PHP?

Решение для вас - использовать оператор спреда *:

fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)

Переменное количество аргументов (Varargs)

13
задан Community 23 May 2017 в 12:01
поделиться

4 ответа

require_once () в основном полагается на физический файл, чтобы определить, был ли он включен. Так что это не столько контекст, в котором вы вызываете require_once () , сколько то, требовался ли этот физический файл ранее.

В приведенном выше коде функция foo () не будет повторно анализировать baz.php , поскольку это будет тот же файл, который был ранее включен в начало .

Однако вы получите разные результаты в зависимости от того, включили ли вы его в foo () или включили его вверху, поскольку область видимости будет применяться, когда require_once () сделает преуспевать.

6
ответ дан 2 December 2019 в 00:31
поделиться

По крайней мере, в PHP 7.3, require_once имеет глобальную область видимости.
, Если это не было бы, и x.php и z.php, должен бросить ошибки, как y.php делает:

<час> a.php

<?php function a() { require_once 'b.php'; b(); }

b.php

<?php function b() { debug_print_backtrace(); }

x.php

<?php
require_once 'a.php';
a();
b();

->

#0 c() called at [/var/www/b.php:2]  
#1 b() called at [/var/www/a.php:3]  
#0 c() called at [/var/www/a.php:4]  

y.php

<?php
require_once 'a.php';
b();

-> Фатальная ошибка: Непойманная Ошибка: Звоните в неопределенную функцию b () в/var/www/y.php на строке 3

z.php

<?php
require_once 'a.php';
require_once 'b.php';
b();

->

#0 b() called at [/var/www/z.php:4]
0
ответ дан 2 December 2019 в 00:31
поделиться

Нет. Отслеживание require_once применяется к внутренним функциям. Однако следующие скрипты вызывают ошибку:

a.php

<?php
require_once('b.php');
function f() { require_once('b.php'); echo "inside function f;"; }
?>

b.php

<?php
f();
?>

, потому что функция f () является не определен заранее в b.php .

5
ответ дан 2 December 2019 в 00:31
поделиться

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

Если в вашем включении есть функции и т. Д., У вас все равно возникнут проблемы с включением его в функцию, поэтому область действия не имеет значения. Если это просто определяемые или обрабатываемые переменные, то вы можете просто использовать require вместо require_once , если хотите, чтобы он был включен снова, тем самым переопределив переменные в вашей области.

3
ответ дан 2 December 2019 в 00:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: