PHP名称空间无法识别

时间:2018-02-05 20:13:54

标签: php machine-learning namespaces

我对PHP有点新,我还在学习名称空间。现在我正试图从github中汲取“PHP-ML”机器学习项目 http://php-ml.readthedocs.io/en/v0.1.0/ 它有一个示例包含在索引文件本身,但由于某种原因,我无法让它返回任何东西。 它没有错误,但它没有返回任何东西。

没有意识到出了什么问题,我继续进行公开教程, https://www.sitepoint.com/how-to-analyze-tweet-sentiments-with-php-machine-learning/ 并按照步骤重新创建给定的程序,但它返回错误: 来自classifyTweets.php。

Undefined variable: classifier的{​​{1}}

经过大量的实验后,我似乎很清楚,命名空间并没有被识别出来。我可以使用$predictedLabels = $classifier->predict($testSamples);调用这些文件,但是当我尝试使用include __DIR__ . '/src/classification/SentimentAnalysis.php';时(这是教程所要求的)没有任何反应

当我尝试从命名空间调用它时,它甚至没有错误,它只是没有做任何事情。直到你尝试使用SentimentAnalysis.php中的公共函数“预测”,然后它会抛出一个错误,说它不存在。

我想,我完全遵循了所有步骤。我不明白出了什么问题。

- 编辑:添加了一些基本的代码结构 SentimentAnalysis.php

use PhpmlExercise\Classification\SentimentAnalysis;

最后一行是我得到一个错误,说分类器是一个未定义的变量。哪个没错。但我认为SentimentAnalysis.php应该处理这个问题。至少,我按照教程指示的方式设置了所有内容。 $ testSamples在步骤4中创建。“predict”是SentimentAnalysis的公共函数,如下所示

<?php
namespace PhpmlExercise;
use PhpmlExercise\Classification\SentimentAnalysis; 

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

// steps 1-4 have not given me any trouble, so I'll leave them out

//STEP 5 : Test the classifier accuracy 
$predictedLabels = $classifier->predict($testSamples);

是的,我的根文件夹中的composer.json确实包含

<?php

namespace PhpmlExercise\Classification;
use Phpml\Classification\NaiveBayes;  

/**
 * Class SentimentAnalysis
 * @package PhpmlExercise\Classification
 */

class SentimentAnalysis
{
    protected $classifier;

    public function __construct()
    {
        $this->classifier = new NaiveBayes();
    }

    public function predict($samples)
    {
        return $this->classifier->predict($samples);
    }
}

如果您需要更多代码,请与我们联系。

- OLD--
这是我正在使用的代码的副本。 https://www.dropbox.com/s/l4hb29g4o01ge88/phpml%20sample.zip?dl=0 其中一些有点凌乱。但它的当前状态与教程完全相同。你将不得不接受我的话。 如果您需要我发布任何其他内容,请告诉我。

0 个答案:

没有答案