在php中使用库:找不到类

时间:2018-02-16 21:04:50

标签: php namespaces include

我尝试使用此库:https://github.com/duzun/hQuery.php

我的项目是这样的:

BetCompare
  Application
    Teams
      file_using_the_library.php
      hQueryLib
        hquery.php

所以这就是我在我的php文件中使用它的方式:

namespace BetCompare\Application\Teams;
use BetCompare\Application\Teams\hQueryLib\hquery;

hQuery::$cache_path = "/path/to/cache";

这会返回错误Class not found。在对此事进行了一些研究后,我试过这个:

namespace BetCompare\Application\Teams;
use BetCompare\Application\Teams\hQueryLib\hquery;
include_once 'hQueryLib/hquery.php';

hQuery::$cache_path = "/path/to/cache";

然后错误如下:Cannot declare class hQuery_Context, because the name is already in use。我不明白,第二个错误使它看起来像use就够了并加载了这个类。但我无法使用它......我做错了什么?

我也尝试过只使用include_once,但它不起作用。

1 个答案:

答案 0 :(得分:3)

这样(使用名称空间duzun\hQuery):

<?php

namespace BetCompare\Application\Teams;

use duzun\hQuery;

include_once 'hQueryLib/hquery.php';
hQuery::$cache_path = "/path/to/cache";

或者像这样,没有命名空间:

<?php

namespace BetCompare\Application\Teams;

include_once 'hQueryLib/hquery.php';
\hQuery::$cache_path = "/path/to/cache";

您的代码无法使用,因为如果您编写

use BetCompare\Application\Teams\hQueryLib\hQuery;

您实际上假设hQuery类具有命名空间定义

namespace BetCompare\Application\Teams\hQueryLib;

它没有(参加第三方课程)。

具有duzun\hQuery的部分在hQuery.php文件的最后几行中定义,并在docus中进行了描述。