Как автоматически загружать пространства имен PHP без Composer? - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь использовать эту библиотеку: https://github.com/wunderio/docebo-php

Однако она не найдена в Composer, несмотря на то, что она перечисляет команду Composer на странице.

Как я могу вызвать эту библиотеку и создать новый экземпляр класса Docebo, как показано в примере?

use Docebo\Docebo;

try {
  $docebo = new Docebo('base_url', 'client_id', 'client_secret', 'username', 'password');
} catch (Exception $e) {
  echo $e->getMessage();
}

Я попытался использовать эту библиотеку путем клонирования репозитория github,и создаем следующее:

docebo-php/src$ cat test.php
<?php
require_once("Docebo/Docebo.php");

use Docebo\Docebo;

try {
  $docebo = new Docebo('base_url', 'client_id', 'client_secret', 'username', 'password');
} catch (Exception $e) {
  echo $e->getMessage();
}
?>

Это просто приводит к:

$ php test.php
PHP Fatal error:  Interface 'Docebo\DoceboInterface' not found in /var/www/www/htdocs/docebo-php/src/Docebo/Docebo.php on line 18

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Не ясно, используете ли вы какой-либо фреймворк или просто обычный код PHP.

Мое решение для простого кода PHP:

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

function __autoload($class_name)
{
    //class directories
    $directorys = array(
        '/Controllers/',
        '/Libraries/',
    );

    //for each directory
    $ds = "/"; //Directory Seperator
    $dir = dirname(__FILE__); //Get Current file path
    $windir = "\\"; //Windows Directory Seperator
    $path = str_replace($windir, $ds, $dir);

    foreach($directorys as $directory)
    {
        //see if the file exsists
        if(file_exists( $path . $directory . $class_name . '.php'))
        {
            require_once( $path . $directory . $class_name . '.php');
            //only require the class once, so quit after to save effort (if you got more, then name them something else
            return;
        }
    }
}

Сохраните его как autoload.php в корневой директории вашего проекта, затем укажите его поверх любого PHP-файла, который вам нравится:

require_once('autoload.php');
0 голосов
/ 18 сентября 2018

Вы можете добавить собственный репозиторий с типом vcs и в любом случае установить эту библиотеку с помощью Composer, даже если она недоступна в Packagist:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/wunderio/docebo-php"
        }
    ],
    "require": {
        "wunder/docebo-php": "dev-master"
    }
}

Composer клонирует этот репозиторий и извлекает из него метаданные напрямую.

Обратите внимание, что тип vcs должен быть менее проблематичным, чем тип package, который имеет некоторые ограничения и должен использоваться только в случае сбоя всего остального.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...