如何通过url从另一个文件调用类函数?

时间:2019-02-26 10:31:22

标签: php class oop

要做的事情:我想从 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中抛出

2 个答案:

答案 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文件。