2015-10-28 52 views
0

我想從文件調用一個類。我用下面的代碼:從PHP中的不同文件調用一個類

<?php 
use Fieg\Bayes\Classifier; 
use Fieg\Bayes\Tokenizer\WhitespaceAndPunctuationTokenizer; 

$tokenizer = new WhitespaceAndPunctuationTokenizer(); 
$classifier = new Classifier($tokenizer); 

$classifier->train('en', 'This is english'); 
$classifier->train('fr', 'Je suis Hollandais'); 

$result = $classifier->classify('This is a naive bayes classifier'); 

但它給錯誤:

Fatal error: Class 'Fieg\Bayes\Tokenizer\WhitespaceAndPunctuationTokenizer' not found in C:\xampp\htdocs\Nayve\test.php on line 5 

我的文件夾位置是:

enter image description here

和我WhitespaceAndPunctuationTokenizer類代碼:

<?php 

/* 
* @author Jeroen Fiege <[email protected]> 
* @copyright Webcreate (http://webcreate.nl) 
*/ 

namespace Fieg\Bayes\Tokenizer; 

use Fieg\Bayes\TokenizerInterface; 

class WhitespaceAndPunctuationTokenizer implements TokenizerInterface 
{ 
    protected $pattern = "/[ ,.?!-:;\\n\\r\\t…_]/u"; 

    public function tokenize($string) 
    { 
     $retval = preg_split($this->pattern, mb_strtolower($string, 'utf8')); 
     $retval = array_filter($retval, 'trim'); 
     $retval = array_values($retval); 

     return $retval; 
    } 
} 
+0

是否包含當前php腳本中的類? – jmattheis

+0

您可以使用'使用Fieg \ Bayes \ Tokenizer \ WhitespaceAndPunctuationTokenizer;'但在名稱空間Nayve \ Fieg \ Bayes \ Tokenizer中定義它''。有沒有其他的代碼你沒有提供給我們或者你使用了錯誤的命名空間。 –

回答

0

定義包括路徑,以便PHP可以找到它..

set_include_path(get_include_path() . PATH_SEPARATOR . 'path/to/classes'); 
0

嘗試以下操作:

use Fieg\Bayes\Tokenizer\WhitespaceAndPunctuationTokenizer as WhitespaceTokenizer; 

,然後用它來創建對象:

$tokenizer = new WhitespaceTokenizer(); 
0

它看起來像您正在使用composer,因此,如果您直接加載文件,則需要包含composer自動加載器引導程序文件。

<?php 
require __DIR__ . '/vendor/autoload.php'; 

// All your code goes here 

如果你沒有一個供應商的文件夾或沒有設置您composer.json配置,那麼你需要確保你的composer.json文件包含:

{ 
    "autoload": { 
     "psr-4": {"Fieg\\Bayes\\": "Fieg/Bayes/"} 
    } 
} 

,然後運行作曲家安裝設置您的自動加載文件:

$ composer install 

參考:https://getcomposer.org/doc/01-basic-usage.md#autoloading

相關問題