php需要从inside方法调用类

Jer*_*Gwa 11 php oop class require

根据我的理解,需要将代码粘贴到调用的php文件中.

如果你需要从方法内部...它会将整个代码/类粘贴到方法中,阻塞方法中的下一个语句.

例如.

  function test() {

    require 'pathtosomeclasscode';
    somestatement; // any code after the require is blocked.

 }
Run Code Online (Sandbox Code Playgroud)

我如何解决这个问题,能够在任何地方都需要代码,而不是将其粘贴在那个确切的位置?

tim*_*dev 19

有点令人惊讶的是,这似乎工作得很好.包含的代码将在Baz :: bork()的范围内执行 - 但代码只是定义了一个类,而类是全局的.所以你最终得到了一个定义的类.

文件:Foo.php:

<?PHP
class Foo{
      function bar(){
               echo "Hello from Foo::bar()!\n";
      }
}
Run Code Online (Sandbox Code Playgroud)

文件:Baz.php:

<?PHP
class Baz{

      function bork(){
               require_once "Foo.php";
               $f = new Foo();
           $f->bar();
      }
}

echo "testing internal definition:\n";
$b = new Baz();
$b->bork();

echo "\ntesting in global scope:\n";

$f = new Foo();
$f->bar();
echo "\nall done\n";
Run Code Online (Sandbox Code Playgroud)

输出:

$ php Baz.php
testing internal definition:
Hello from Foo::bar()!

testing in global scope:
Hello from Foo::bar()!

all done
Run Code Online (Sandbox Code Playgroud)

现在,我想不出很多你想用这种方式做事的地方.人们通常require_once()在类定义之外的类文件顶部的任何可能的依赖项.


ici*_*cio 7

调用require,require_once,includeinclude_once 不会在函数中停止代码的执行,除非有附带的脚本问题.包含文件中的代码在与函数相同的范围内执行(定义的函数和类是全局的),不插入其中,替换其他内容.

其他答案建议使用其中一种替代方案require作为解决方案 - 如果脚本中的错误与命名冲突有关(即尝试重新定义类或函数),这些解决方案可能对您有用,否则您可能希望向我们提供更多有关已发生(或未发生)的详细信息,以使您认为存在问题,以便我们可以帮助您解决真正的原因.

另请注意,这些文件包含方法不会将代码粘贴到脚本中.粘贴是人们用来维护文本的工具.我建议你阅读PHP手册,试着进一步理解这些功能是如何工作的:

如果你在调查后对他们的工作有进一步的问题,请再次发布.