0

如果我在两个文件中有两个类,A.php 和 B.php,如果 A.php 包含 require_once(B.php) 并且 A.php 还包含静态方法 do_thing(),那么 A::do_thing() 是否可用在 B.php 中,假设起点始终是 A.php,而 B.php 在 A.php 中始终是 require_once?除了这个关于 variables的问题之外,我似乎找不到任何相关问题,但如果这也适用于方法,则并不明显。

4

2 回答 2

1

简短的回答似乎是肯定的。假设:

一个.php

<?php
require_once('B.php');
class A{
    public static function do_thing(){
        echo "Things done!\n";
    }
}

B.php

<?php
class B{
    public function git_er_done(){
        A::do_thing();
    }
}

测试.php

<?
require_once('A.php');
$b = new B();
$b->git_er_done();

为了彻底,您还应该require_once('A.php');B.php中,因为这是依赖项所在的位置,并且鉴于您希望避免auto_loading,避免假设加载发生在其他地方的危险是明智的。

于 2013-09-19T13:22:42.823 回答
1

是的,A::do_thing() 将在 B.php 中可用。例如,在下面,我们包含 B.php,它在声明之前调用 A() 函数并且它可以工作。PHP在执行前解析:

A.php:

<?php
include('B.php');
function A() {
    echo 'A';
}

B.php:

<?php
A();

调用 A.php 脚本将输出:

一个

于 2013-09-19T13:24:36.007 回答