如何使用名称空间包括PHP类



我还没有完全在PHP中的名称空间周围。我也不使用作曲家或自动加载器。我了解它们,但通常很难将它们包括在我自己的项目中。

所以我想在我正在开发的WordPress插件中包含一个软件包,特别是此https://github.com/elliotboney/thinkific-php

i可以包含主文件确定,但是在该文件中调用函数时,请在下面获取错误。我不确定它是否与它使用名称空间有关的事实,还是仅仅是因为它试图将文件包含在API子文件夹中,一旦我将主文件包含在我自己的代码中,就不会成为正确的路径。

有人知道我如何包含此包在我自己的项目中使用它吗?

require_once('Thinkific/Thinkific.php');
    $think = new ThinkificThinkific([
    'apikey'    => 'xxxxxxxxx',
    'subdomain' => 'yyyyyyyyy',
    'debug'     => true
]);
$users = $think->users();
$users = $users->getAll();

这是错误,它表明类文件和API子文件夹中的类别未加载。

Fatal error: Uncaught Error: Class 'ThinkificApiUsers' not found in Fatal error: Uncaught Error: Class 'ThinkificApiUsers' not found in /mysite/public_html/wp-content/plugins/thinkific/Thinkific/Thinkific.php:51 Stack trace: #0 /mysite/public_html/wp-content/plugins/thinkific/Thinkific/Thinkific.php(36): ThinkificThinkific->getApi('\Thinkific\Api\...') #1 /mysite/public_html/wp-content/plugins/thinkific/thinkific.php(50): ThinkificThinkific->__call('users', Array) #2 /mysite/public_html/wp-content/plugins/thinkific/thinkific.php(29): Thinkific::thinkific_get_users() #3 /mysite/public_html/wp-includes/class-wp-hook.php(298): thinkific_woocommerce_order_status_completed(Object(WP)) #4 /mysite/public_html/wp-includes/class-wp-hook.php(323): WP_Hook->apply_filters('', Array) #5 /mysite/public_html/wp-includes/plugin.php(515): WP_Hook->do_action(Array) #6 /mysite/public_html/wp-includes/class-wp.php(746): do_action_ref_array('wp in /mysite/public_html/wp-content/plugins/thinkific/Thinkific/Thinkific.php on line 51

尝试这样的东西:

lib.php:

<?php
// Application library 1
namespace AppLib1;
const MYCONST = 'Hello,';
// Application library 1
namespace AppLib2;
const MYCONST = 'How are you?';
function MyFunction() {
    return __FUNCTION__;
}
class MyClass {
    static function WhoAmI() {
        return __METHOD__;
    }
}
?>

myApp.php:

<?php
require_once('lib.php');
echo AppLib1MYCONST . "n";
echo AppLib2MYCONST . "nn";
echo AppLib2MyFunction() . "n";
echo AppLib2MyClass::WhoAmI() . "n";
?>

您正在使用的库取决于composer,即您进行composer install的位置,它将生成vendor/autoload.php,您只需要生成vendor/autoload.php,在这里,此文件将照顾您的自动加载课程。

require_once 'vendor/autoload.php';
$think = new ThinkificThinkific([
    'apikey'    => 'xxxxxxxxx',
    'subdomain' => 'yyyyyyyyy',
    'debug'     => true
]);
$users = $think->users();
$users = $users->getAll();

最新更新