【问题标题】:How to access variables defined in method with require_once如何使用 require_once 访问方法中定义的变量
【发布时间】:2016-02-12 19:46:31
【问题描述】:

我一直在研究一个基于 MVC 框架的简单类。我正在努力学习很多关于编程的知识。我的范围有问题。它有一个非常简单的 PHP 脚本,需要访问变量 birth

class NUMK {

    public $plugin_name;
    public $version;

    public function __construct( $plugin_name, $version) {

        $this->plugin_name = $plugin_name;
        $this->version = $version;
        $this->loadClient();

    }

    public function pager(){
        if(isset($_POST['birth'])){
            $birth = $_POST['birth'];
            require_once '/html/view/index.php';
        };

    }

}

如何在/html/view/index.php 中访问$birth。我试过global $birth。没运气。

谢谢

【问题讨论】:

  • 好吧,您必须在尝试访问变量之前调用 require。但这不是这里的大问题,问题是当您运行该函数时,它将包含您调用它的整个“/html/view/index.php”页面。除非那是你想要的。
  • 是的,我想要那个,页面是 htmlNUMK 类是逻辑
  • 所以$birth 是首先在index.php 中定义的,而您正在尝试使用该方法更改值??或者你是在方法中定义$birth,然后尝试在index.php中使用
  • @WheatBeak 第二个选项。
  • 您的要求是否有效?可能是路径问题。您是在本地运行还是在网络服务器上运行?

标签: php wordpress class oop


【解决方案1】:

您可以使用extract function。它接收一个数组并将变量导入当前符号表,然后您可以在所需的文件中引用它,如 $birth.

例子:

public function pager(){
    if(isset($_POST['birth'])){
        $data          = array();
        $data['birth'] = $_POST['birth'];
        extract($data, EXTR_REFS);
        require_once '/html/view/index.php';
    };

}

【讨论】:

  • 这是唯一的方法吗?看起来很老套//
  • 确实它看起来很老套,但这是一些 MVC 框架将在控制器中创建的变量暴露给视图的方式。似乎正是您想要的。
  • 是的,你的权利,这安全吗?关于它的任何更多信息,关于从未听说过,想阅读它。
  • 还有它超级奇怪的功能。如果我创建任何像$testingB 这样的变量,即使我不将它添加到$data 仍然可以在view/index.php 中使用,这到底是什么?
  • 这是在文件之间公开变量的常见用途。Laravel/FuelPHP 是使用这种方法的框架示例github.com/fuel/core/blob/1.8/develop/classes/view.php#L236github.com/laravel/framework/blob/5.2/src/Illuminate/View/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 2020-10-10
相关资源
最近更新 更多