要做的事情:我想从 file-1.php 调用另一个名为 file-2.php 的文件中的函数,因为我需要通过URL触发功能。例如,我访问URL http://localhost/sitename/wp-content/plugins/plugin-name/file-2.php
,它将触发 file-1.php 文件中的import()
函数。
其他信息:我将使用cron作业并指向该URL来触发该功能。
file-1.php
<?php
namespace Inc\Core;
class CronMethods
{
public static function import() {
echo "Test";
}
}
file-2.php
<?php
use Inc\Core\CronMethods;
CronMethods::import();
问题/错误:
致命错误:未捕获的错误:在/var/www/html/padlab/wp-content/plugins/padlab/inc/cron.php:5中找不到类'Inc \ Core \ CronMethods':5堆栈跟踪:#0 { main}在第5行的/var/www/html/padlab/wp-content/plugins/padlab/inc/cron.php中抛出
答案 0 :(得分:2)
首先将file1包含到file2,然后在调用您的方法之后。
file-2.php
<?php
use Inc\Core\CronMethods;
require_once(file1 path);
CronMethods::import();
答案 1 :(得分:0)
这是我喜欢组织课程的方式。
所有类文件都将位于class
文件夹中,而所有名称空间本身都有一个单独的文件夹。
/class
/Inc
/Core
CronMethods.php
autoload.php
file-2.php
然后使用namespace friendly autoloader自动加载类。
autoload.php
<?php
spl_autoload_register(function($className) {
$className = str_replace("\\", DIRECTORY_SEPARATOR, $className);
include_once $_SERVER['DOCUMENT_ROOT'] . '/class/' . $className . '.php';
});
file-2.php
<?php
include_once 'autoload.php';
use Inc\Core\CronMethods;
CronMethods::import();
通过这种方式,您不需要包括所有的类文件,只需包含autoload.php
文件。