2017-04-26 71 views
0

我還沒有在PHP中使用名稱空間。我也不使用作曲家或自動加載機。我理解他們,但往往難以將他們納入我自己的項目。如何使用名稱空間包含PHP類

所以我想包括在WordPress插件我正在開發一個包,特別是這一個https://github.com/elliotboney/thinkific-php

我可以包括主文件確定,但得到調用該文件中的函數時,下面的錯誤。我不確定它是否處理使用命名空間的事實,或者僅僅是因爲它試圖將文件包含在Api子文件夾中,一旦將主文件包含到我自己的代碼中,它將不會是正確的路徑。

有誰知道我可以包括這個包在我自己的項目中使用它嗎?

require_once('Thinkific/Thinkific.php'); 

    $think = new \Thinkific\Thinkific([ 
    'apikey' => 'xxxxxxxxx', 
    'subdomain' => 'yyyyyyyyy', 
    'debug'  => true 
]); 

$users = $think->users(); 
$users = $users->getAll(); 

但是,這是錯誤,它顯示Api子文件夾中的類文件等類沒有加載。

Fatal error: Uncaught Error: Class '\Thinkific\Api\Users' not found in Fatal error: Uncaught Error: Class '\Thinkific\Api\Users' 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): Thinkific\Thinkific->getApi('\\Thinkific\\Api\\...') #1 /mysite/public_html/wp-content/plugins/thinkific/thinkific.php(50): Thinkific\Thinkific->__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 

回答

0

嘗試這樣:

lib.php:

<?php 
// Application library 1 
namespace App\Lib1; 
const MYCONST = 'Hello,'; 

// Application library 1 
namespace App\Lib2; 
const MYCONST = 'How are you?'; 

function MyFunction() { 
    return __FUNCTION__; 
} 

class MyClass { 
    static function WhoAmI() { 
     return __METHOD__; 
    } 
} 

?> 

myapp.php:

<?php 
require_once('lib.php'); 

echo App\Lib1\MYCONST . "\n"; 

echo App\Lib2\MYCONST . "\n\n"; 

echo App\Lib2\MyFunction() . "\n"; 
echo App\Lib2\MyClass::WhoAmI() . "\n"; 

?> 
0

您正在使用的庫是依賴於composer中,你在哪裏做composer install那裏會產生一個vendor/autoload.php,你只需要在這裏生成vendor/autoload.php這個文件將照顧你的類自動加載。

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

$users = $think->users(); 
$users = $users->getAll(); 
+0

謝謝,但我不使用作曲家。 –

相關問題