在PHP中调用来自不同文件的类

时间:2015-10-28 14:25:07

标签: 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 <jeroen@webcreate.nl>
 * @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;
    }
}

3 个答案:

答案 0 :(得分:0)

定义包含路径,以便php可以找到它..

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

答案 1 :(得分:0)

尝试以下方法:

use Fieg\Bayes\Tokenizer\WhitespaceAndPunctuationTokenizer as WhitespaceTokenizer;

然后使用它来创建对象:

$tokenizer = new WhitespaceTokenizer();

答案 2 :(得分:0)

看起来您正在使用composer,因此,如果您直接加载文件,则需要包含composer autoloader引导程序文件。

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

// All your code goes here

如果您没有供应商文件夹或尚未设置composer.json配置,那么您需要确保composer.json文件包含:

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

然后运行composer install来设置自动加载文件:

$ composer install

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