【问题标题】:Require another file in php class objects在 php 类对象中需要另一个文件
【发布时间】:2021-07-17 21:56:26
【问题描述】:

假设我有以下代码:

a.php

<?

class H{

    public $i = 123;

    public function S(){
        require "b.php";
        die;
    }
}

$i = new H();
$i -> S();

b.php

<?

echo $i->i;

但是,系统会在文件 b.php 中抛出一个错误,即 变量 i 未定义

我该如何解决这个问题?

如果可能的话,有人能告诉我为什么会这样吗?

【问题讨论】:

标签: php class


【解决方案1】:

在 OOP 的情况下,您永远不应该包含这样的文件。由于oop 和程序PHP 不同。每当您想在类中回显任何内容时,您都应该使用 $this 关键字来表示您正在当前类对象的上下文中工作。所以这就是为什么你的代码不工作并且你得到那个变量 i 没有定义。正如 nathanael 所说,这不是一种优雅的编码方式

【讨论】:

    【解决方案2】:

    你可以写在b.php中

    echo $this->i;
    

    这可行,但这不是一种优雅的编码方式,

    或者,您可以让$iS() 中访问,在a.php 中访问

    public function S(){
        global $i;
        require "b.php";
        die;
    }
    

    这也可以,但不再优雅

    当你在方法S()中需要b.php时,它会将b.php的代码注入到方法S()中,并且没有变量$i

    你有一个全局变量$i,它不能从S() 访问,除非你明确地使它可以访问

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2017-04-25
      • 1970-01-01
      相关资源
      最近更新 更多