Как загрузить класс PHP?

Я использую Pomm 1.1.4 и не могу загрузить класс. Вот it says Fatal error: Class 'Pomm\Connection\Database' not found in /users/ilhanna/public_html/api/v1/Pomm-1.1.4/Pomm/Service.php on line 38 В строке 38 нет ничего, только комментарий. Мой код для загрузки класса

require_once 'Pomm-1.1.4/Pomm/Service.php';
# Using the constructor
$service = new Pomm\Service(array(
  'db_one' => array(
    'dsn' => 'pgsql://username:password@localhost:5432/databasename'
  )
  ));

Я что-то упускаю, я думаю.

2 ответа

Решение

Я бы посоветовал вам использовать composer для установки Pomm и получения автозагрузчика. Скачать composer.phar от упаковщика

создайте файл composer.json следующим образом:

{
"require": {
    "pomm/pomm": "~1.1"
  }
}

и выполнить phar для установки Pomm. Просто добавьте следующий код в ваш index.php

$loader = require __DIR__."/vendors/autoload.php";

Если вы не можете использовать composer, создайте свой собственный механизм автозагрузки:

spl_autoload_register(function ($class) {
    if (0 === strpos($class, 'Pomm\\')) {
        $class = str_replace('\\', '/', $class);
        require sprintf("%s/%s.php", __DIR__, $class);
}

в самом начале вашего файла index.php, и он должен работать нормально.

Ваш Service.php файл включает в себя класс Service который имеет две другие зависимости класса. Ошибка для пропавших Database учебный класс.

  namespace Pomm;

  use Pomm\Connection\Database; // Error line (class missing) 
  use Pomm\Exception\Exception;

Эти классы также должны быть загружены до создания экземпляра службы. Если файлы находятся в том же каталоге, что и класс обслуживания; Вы могли бы просто включить их раньше.

require_once 'Pomm-1.1.4/Pomm/Datebase.php';
require_once 'Pomm-1.1.4/Pomm/Exception.php';
require_once 'Pomm-1.1.4/Pomm/Service.php';

$service = new Pomm\Service(array(
  'db_one' => array(
    'dsn' => 'pgsql://username:password@localhost:5432/databasename'
  )
));

Лучшим решением было бы заглянуть в автозагрузку PHP; возможно , менеджер пакетов, такой как Composer, если ваш проект немного больше.

Другие вопросы по тегам