Решение для вас - использовать оператор спреда *
:
fun string(@StringRes stringRes: Int, vararg args: String): String = getString(stringRes, *args)
require_once ()
в основном полагается на физический файл, чтобы определить, был ли он включен. Так что это не столько контекст, в котором вы вызываете require_once ()
, сколько то, требовался ли этот физический файл ранее.
В приведенном выше коде функция foo ()
не будет повторно анализировать baz.php
, поскольку это будет тот же файл, который был ранее включен в начало .
Однако вы получите разные результаты в зависимости от того, включили ли вы его в foo ()
или включили его вверху, поскольку область видимости будет применяться, когда require_once ()
сделает преуспевать.
По крайней мере, в 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]
Нет. Отслеживание 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
.
Чтобы более конкретно ответить на ваш вопрос, второй раз, когда вы вызываете require_once
для этого файла, он ничего не сделает, потому что он уже включен.
Если в вашем включении есть функции и т. Д., У вас все равно возникнут проблемы с включением его в функцию, поэтому область действия не имеет значения. Если это просто определяемые или обрабатываемые переменные, то вы можете просто использовать require
вместо require_once
, если хотите, чтобы он был включен снова, тем самым переопределив переменные в вашей области.