PHP - 包含文件而不继承变量?

Posted

技术标签:

【中文标题】PHP - 包含文件而不继承变量?【英文标题】:PHP - Include files without inhereting variables? 【发布时间】:2012-07-13 12:57:00 【问题描述】:

是否可以在 php 脚本中包含(或者,对于我的用途,运行)另一个 PHP 文件而不继承父脚本中设置的变量?我知道wrapping the include in a function 可以做到这一点,但感觉很草率。

还有更优雅的选择吗?

【问题讨论】:

包含将继承范围内包含的任何内容,因此将其包装在一个函数中确实是解决方案。另一种解决方案是限制您在父脚本中创建的全局变量的数量。如果它们不应该在各种包含中公开,那么也许它们一开始就不应该是全局的 我实际上没有任何设置的全局变量,所以将它包装在一个函数中将解决问题。我只是希望它有更具体的功能,或者其他什么。 :) 你不能在你包含的文件中将它们设为类中的私有变量吗? 也许你应该停止使用“面向包含的编程”并开始学习OOP 有时,对于简单的处理脚本,面向对象的编程会减慢开发过程。 :) 但你是对的——在大多数情况下,OOP 会阻止这成为一个问题。 【参考方案1】:

将包含命令包装到包含函数中。

    <?php
    //Führt die Cronjobs aus
    set_time_limit(30);

    /** Alle Dateien mit _cronjob am schluss sollen minütlich ausgeführt werden.*/
    $files = scandir(__DIR__ ."/cronjob");

    foreach($files as $file) 
        if($file == "." || $file == "..") continue;
        include_easy(__DIR__ ."/cronjob/". $file);
    

    //Damit die variablen nicht überschrieben werden, wird das include über eine funktion gemacht.
    function include_easy($pfad) 
        include($pfad);
    

【讨论】:

【参考方案2】:

不幸的是,在撰写本文时,将您想要包含在函数或方法中的内容包装起来似乎是实现此目的的唯一方法。

【讨论】:

【参考方案3】:

将文件中的变量设置为包含私有变量。这样,它们仅包含在您要从中继承函数的文件中。这是解决问题的一种更简洁的方法。

【讨论】:

你不能将全局范围内的变量设为私有,没有任何意义。

以上是关于PHP - 包含文件而不继承变量?的主要内容,如果未能解决你的问题,请参考以下文章

Flask08 包含(include)继承(extends)宏???模板中变量的来源

拒绝继承或使用 PHP 类

如何在Python中的for循环内创建对象列表而不继承属性值[重复]

19PHP 面向对象

我可以以某种方式使用继承吗

PHP 封装,继承,多态