PHP for循环不访问传入参数但可在for循环外部访问的变量
您好,我正在编写自己的php特定框架,因为其他框架无法完成我想要完成的工作 这是一个巨大的任务,我决定改变我的“路由系统”,这要求我预加载从PHP for循环不访问传入参数但可在for循环外部访问的变量,php,apache,frameworks,php-8,Php,Apache,Frameworks,Php 8,您好,我正在编写自己的php特定框架,因为其他框架无法完成我想要完成的工作 这是一个巨大的任务,我决定改变我的“路由系统”,这要求我预加载从$settings参数拖入的选定类。我将一个“设置”类传递到正在访问的类构造函数param中,我已经检查了数组计数,还检查了它是否设置为,但是一旦进入for循环,它就为null 警告:第6行的/***/***/*****/phpframew/System/App.php中未定义变量$settings for循环只是预加载添加到Settings类中的类 我的问
$settings
参数拖入的选定类。我将一个“设置”类传递到正在访问的类构造函数param中,我已经检查了数组计数,还检查了它是否设置为,但是一旦进入for循环,它就为null
警告:第6行的/***/***/*****/phpframew/System/App.php中未定义变量$settings
for循环只是预加载添加到Settings类中的类
我的问题是
- 这个代码有什么问题
- 这是PHP特有的问题吗
- 您没有考虑函数中变量的范围
如果希望嵌套函数中的“设置”可用,则需要将其作为参数传递:
在for循环中,如果希望设置可用,则需要将$settings作为参数传递给要引入spl_autoload_寄存器的匿名函数:
<?php
class App {
function __construct($settings) {
/*if(isset($settings->preload)) {
die('yes');
} else {
die('no');
}*/
for ($i = 0; $i <= sizeof($settings->preload); $i++) {
spl_autoload_register(function($class_name) {
if(file_exists($settings->preload[$i].$class_name.'.php'))
require_once ''.$settings->preload[$i].$class_name.'.php';
});
}
}
}
?>
PS:我第一次尝试建立我自己的自动加载器时,我建立了类似的东西。我不想告诉您不要尝试构建自己的,但我建议您研究名称空间和PSR-4自动加载。您没有考虑函数中变量的范围 如果希望嵌套函数中的“设置”可用,则需要将其作为参数传递: 在for循环中,如果希望设置可用,则需要将$settings作为参数传递给要引入spl_autoload_寄存器的匿名函数:
<?php
class App {
function __construct($settings) {
/*if(isset($settings->preload)) {
die('yes');
} else {
die('no');
}*/
for ($i = 0; $i <= sizeof($settings->preload); $i++) {
spl_autoload_register(function($class_name) {
if(file_exists($settings->preload[$i].$class_name.'.php'))
require_once ''.$settings->preload[$i].$class_name.'.php';
});
}
}
}
?>
PS:我第一次尝试建立我自己的自动加载器时,我建立了类似的东西。我不想告诉您不要尝试构建自己的名称空间,但我建议您研究名称空间和PSR-4自动加载。谢谢,我的朋友工作如梦。考虑到你回答了我的问题,并建议我走另一条路,我一定会研究PSR-4谢谢你分享知识谢谢你我的朋友工作如梦。考虑到你回答了我的问题,并建议我走另一条路,我一定会研究PSR-4,谢谢你分享这些知识