【问题标题】:Interface '...' not found in (PHP SQL Query Builder)在(PHP SQL 查询生成器)中找不到接口“...”
【发布时间】:2017-09-14 08:23:52
【问题描述】:

我正在尝试在我正在进行的项目中使用 PHP SQL Query Builder。我正在手动安装它。我通过将 src 目录复制到我的项目中,然后在我的类中使用以下代码来做到这一点:

$this->builder = new NilPortugues\Sql\QueryBuilder\Builder\GenericBuilder();

每当使用构建器时我得到的错误是:

[18-Apr-2017 12:57:48 UTC] PHP Fatal error:  Interface 'NilPortugues\Sql\QueryBuilder\Builder\BuilderInterface' not found in /home/thomassm/public_html/php/lib/sqlbuilder/Builder/GenericBuilder.php on line 24

GenericBuilder.php

namespace NilPortugues\Sql\QueryBuilder\Builder;

use NilPortugues\Sql\QueryBuilder\Builder\Syntax\WriterFactory;
use NilPortugues\Sql\QueryBuilder\Manipulation\AbstractBaseQuery;
use NilPortugues\Sql\QueryBuilder\Manipulation\QueryInterface;
use NilPortugues\Sql\QueryBuilder\Manipulation\QueryFactory;
use NilPortugues\Sql\QueryBuilder\Manipulation\Select;
use NilPortugues\Sql\QueryBuilder\Syntax\Column;
use NilPortugues\Sql\QueryBuilder\Syntax\Table;

/**
 * Class Generic.
 */
class GenericBuilder implements BuilderInterface
{//...}

BuilderInterface.php

namespace NilPortugues\Sql\QueryBuilder\Builder;

use NilPortugues\Sql\QueryBuilder\Manipulation\QueryInterface;

/**
 * Interface BuilderInterface.
 */
interface BuilderInterface
{
    /**
     * @param QueryInterface $query
     *
     * @return string
     */
    public function write(QueryInterface $query);

    /**
     * @param QueryInterface $query
     *
     * @return string
     */
    public function writeFormatted(QueryInterface $query);
}

我认为错误是由调用文件的方式引起的,有什么建议吗?

【问题讨论】:

  • 来自文档:安装 SQL Query Builder 的推荐方法是通过 Composer。为什么要手动安装包?
  • 您使用过自动装载机吗?您的类未加载(可以肯定的是,您可以使用 php 函数 get_included_files doc here 进行检查。然后您应该使用composer autoloader doc here。或者您可以创建和使用自己的自动加载器。

标签: php sql


【解决方案1】:

我正在手动安装它。我通过将 src 目录复制到我的项目中,然后在我的类中使用以下代码来做到这一点:...

每个源文件在使用前都应通过include/requrie 包含在内。但是 PHP 允许为类、接口和特征设置 autoloading。简而言之,当运行时遇到一个未定义的类时,就会调用一个特殊的回调,它可以加载相关的文件。

虽然形式上自动加载规则可以是任意的,但大多数现代项目都支持共同的社区标准:PSR-4 Autoloader。因此,您需要实施该标准。

如库说明中所说,推荐的安装方式是通过Composer

php composer.phar require nilportugues/sql-query-builder

Composer 提供自己的 PSR-4 实现并生成文件vendor/autoload.php。通常此文件包含在应用程序入口点。它允许使用所有必需库中的类。

可以在没有 Composer 的情况下使用这些包 (relevant answer)。但它需要大量工作(您仍然需要 PSR-4 自动装弹机),而且这种方式如今很少使用。

【讨论】:

  • 这听起来可能有点基础,你能给我解释一下作曲家吗。我无法为他们找到任何好的真正基本的解释(考虑到我只是一个 A-Level 学生,考虑到我正在使用这些东西离开我的联盟)。作曲家实际上是做什么的?在您的项目目录中安排文件或使用这些文件设置您的网络空间供您使用?感谢您迄今为止的帮助。
  • 对不起,我很难解释得比官方introduction描述的更好。
  • 感谢您的帮助。我想我只需要试一试,希望我能做对,不要在这个过程中搞砸了:)
猜你喜欢
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多