php - 无法从所需 php 调用的基本 .php 访问变量
问题描述
假设我有如下代码:
索引.php
<?php
require 'file_1.php';
// file_1.php contents can go here, but i'm trying to make this simple and clutter free, thus clean.
// The reason being to not centralize all code in a single file should file_2.php, file_3.php, file_n.php exist.
$app = new type_of_object();
$app->intialize_some_stuff();
?>
文件_1.php
<?php
$app->access_some_method($param1, new function($app) {
// do some logic here...
});
?>
这样做,我得到一个错误,如下所示:
注意:未定义变量:第 2 行 X:\project_folder\file_1.php 中的 app
总而言之,我正在尝试分散所有代码,使其不被定义index.php
,而是让它们由不同的文件托管,例如file_1.php
to file_n.php
. 问题是,我需要从所需$app
文件访问变量,index.php
例如,因为我只需要 1 个实例,不允许重复。file_1.php
file_n.php
我也愿意接受另一种方法。
干杯!
编辑:我在 PHP 中相当新,而且我已经做了很少的研究,这毫无价值。除了我得到的与我的问题相反。此外,需要从其他 php 文件访问$app
是index.php
我问题的核心。
解决方案
拆分代码可能是实现更好可维护性的好主意。您应该避免不明确的脚本名称。
在很大程度上,您肯定希望使用composer方法来维护包。
无论如何,对于基本的代码拆分,规则与常规脚本相同。代码在读取时被解释。只需在一个脚本中重写您的示例:
<?php
$app->access_some_method($param1, new function($app) {
// do some logic here...
});
$app = new type_of_object();
$app->intialize_some_stuff();
?>
看到问题了吗?$app
调用时根本没有初始化access_some_method
。
因此,这将起作用:
<?php
$app = new type_of_object();
$app->intialize_some_stuff();
require 'file_1.php';
?>
但是收益很差。如果您已经有一个类,那么在某些情况下,在多个文件之间拆分逻辑可能会很有趣。我认为这是一个更好的例子(同一文件夹中的所有文件,没有命名空间):
<?php
require('App');
require('AppRequest');
$app = new App();
$request = new AppRequest();
$app->process($request);
通过这种方式,您可以拆分主应用程序逻辑和请求分析逻辑,例如