当其他类使用时,在PHP中,PHP中的类中的常数变量被加载

  • 本文关键字:PHP 变量 加载 常数 其他 php
  • 更新时间 :
  • 英文 :


例如,我在文件中有A类。

namespace PathTo;
class A {
    const SOME_VAR = 'value';
    // many functions
}

我在文件中有B类B.php

use PathToA;
class B {
    public function foo() {
        $i = 1;
        $i = 2;
        $i = 3;
        // other code
       $someVar = A::SOME_VAR;
    }
    // other functions
}

执行函数foo中的哪个时间CC_1 SOME_VAR在RAM中加载。在FOO的第一线或在线$someVar = A::SOME_VAR;或LINE use PathtoA;或其他地方?

a.phpb.php内执行时,读取,解析和执行。那也是将'value'字符串加载到内存中的时候。

同时,加载了有关A类的所有内容。如果您将const SECOND_VAR = 'another-value';添加到类A的位置,一旦执行$someVar = A::SOME_VAR;,也将有一些RAM包含'another-value'

use PathToA;行所做的,只是告诉PHP"如果请求类A,则其意思是PathToA"。您可以添加use SomeNonExistentClassuse SomeClassThatHasASyntaxErrorInTheCode,并且什么都不会改变,因为只要您不尝试使用ExistentClassASyntaxErrorInTheCode PHP实际做任何事情

首次请求变量值时,正在分配内存。一个简单的测试方法是:

创建一个名为foo.php

的文件
<?php
class Foo {
    // As of PHP 7.1.0
    public const BAR = 'bar';
    private const BAZ = 'baz';
}
?>

在您想要的任何地方使用以下文件。

然后键入以下2行:

$x = FOO::BAR;
$y = FOO::BAZ; // <- this will cause an error, since the variable is private

在使用文件期间或检索上一个BAR变量的值时,不会发生错误。这样,您可以在尝试访问其值之前确定PHP对该变量一无所知。

最新更新