Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 仅声明一次“使用”;名称空间;初始化和所有文件对于一个对象都具有相同的名称空间_Php_Oop_Namespaces_Request - Fatal编程技术网

Php 仅声明一次“使用”;名称空间;初始化和所有文件对于一个对象都具有相同的名称空间

Php 仅声明一次“使用”;名称空间;初始化和所有文件对于一个对象都具有相同的名称空间,php,oop,namespaces,request,Php,Oop,Namespaces,Request,我有一个简单的问题想问你。我是否可能只在“主文件”中初始化一次类的名称空间,而所有其他对象或类都得到了它的相同引用 例如Index.php: require_once 'init.php'; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; 现在我得到了一个与这种代码不在同一个文件中的类。Controller.php: function programmAct

我有一个简单的问题想问你。我是否可能只在“主文件”中初始化一次类的名称空间,而所有其他对象或类都得到了它的相同引用

例如Index.php:

require_once 'init.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
现在我得到了一个与这种代码不在同一个文件中的类。Controller.php:

function programmAction($id) {
        $programm = $this->model->getProgrammById($id);
        $html = $this->renderTemplate($this->tempProgramm,['programm' => $programm]);
        return new Response($html);
    }

通常,当我没有将使用行添加到此文件时,我会收到一条错误消息,表明找不到类响应。

仅当您在同一文件中包含所有其他类时。请参阅以下文档中的此注释:

注: 导入规则基于每个文件,这意味着包含的文件将不会继承父文件的导入规则

请不要将所有课程都包含在一个文件中


在每个类文件中重新键入
use
语句似乎是一件痛苦的事情,但当您稍后返回并引用该文件时,它确实会对您有所帮助。顶部是类所依赖的类的列表,在重构或代码重组过程中可能是有用的信息。

仅当您在同一文件中包含所有其他类时。请参阅以下文档中的此注释:

注: 导入规则基于每个文件,这意味着包含的文件将不会继承父文件的导入规则

请不要将所有课程都包含在一个文件中


在每个类文件中重新键入
use
语句似乎是一件痛苦的事情,但当您稍后返回并引用该文件时,它确实会对您有所帮助。顶部是类所依赖的类列表,在重构或代码重组过程中可能是有用的信息。

不明智,但您可以设置
namespace Symfony\Component\HttpFoundation
您也可以直接引用使用过的类:
返回new\Symfony\Component\HttpFoundation\Response($html)
不明智,但您可以设置
名称空间Symfony\Component\HttpFoundation
您也可以直接引用使用过的类:
returnnew\Symfony\Component\HttpFoundation\Response($html)
。。。但是包含的文件从父范围继承变量。。。它在阅读中引入了相同的硬度。。。谁会想到一个文件需要一个
$x
变量才能工作…@RoyalBg使用自动加载和OOP方法,许多应用程序中的许多功能都包装在自动加载程序中包含的类中,具有自己作用域的函数通常会从实际有兴趣使用它的作用域的上下文中删除。即使如此,问题还是在于继承名称空间导入/别名本身,而不是变量范围。我仍然认为在类文件的顶部查看它所依赖的其他类是有益的。不过,如果您可以使用一条语句导入整个名称空间,那么将文件包含在另一个文件(或其函数)中会为所包含的文件创建一个上下文。当您包含
视图时,它非常方便,因此您可以自然地向它们发送一个变量,例如
$model
,该变量包含视图渲染所需的信息。不同的上下文可能需要此
视图
具有不同的数据。它可能与名称空间中的相同。是的,这看起来像是一个黑客攻击,但如果我们考虑到其他PHP特性,这有点不一致。为什么不能使用两种不同的用法(
\a\class
\b\class
)包含来自两个不同位置的类。所有use语句所做的都是在文件中本地创建别名。我可以很容易地从两个不同名称空间中的类中提取功能,这两个名称空间恰好都命名为
CoolClass
。如果我想在同一个文件中实际引用这两个名称,我需要将其中一个别名为另一个名称。由于PSR-4是(事实上的)标准,如果我们想使用两个不同的名称空间包含同一个类,那么该文件必须存储在文件系统中的两个不同位置,这简直是胡说八道,或者我只是误解了你的意思。此外,如果包含的文件要继承包含它的文件的
use
语句,这意味着您将无法完全了解实际留给您的类别名或任何实际引用的内容。您在include层次结构中有多少层?这个文件包括那个包含另一个文件的文件,这个文件实际上包含了我的文件。在此上下文中,
CoolClass
是什么意思?它已经有别名了吗,还是我需要这样做?现在已经过了6个月,我必须重构。否则我就走了,下一个人就得。。。。但是包含的文件从父范围继承变量。。。它在阅读中引入了相同的硬度。。。谁会想到一个文件需要一个
$x
变量才能工作…@RoyalBg使用自动加载和OOP方法,许多应用程序中的许多功能都包装在自动加载程序中包含的类中,具有自己作用域的函数通常会从实际有兴趣使用它的作用域的上下文中删除。即使如此,问题还是在于继承名称空间导入/别名本身,而不是变量范围。我仍然认为在类文件的顶部查看它所依赖的其他类是有益的。不过,如果您可以使用一条语句导入整个名称空间,那么将文件包含在另一个文件(或其函数)中会为所包含的文件创建一个上下文。当您包含
视图时,它非常方便,因此您可以自然地向它们发送一个变量,例如
$model
,该变量包含视图渲染所需的信息。不同的上下文可能需要此
视图
具有不同的数据。它可能与名称空间中的相同。Y