как настроить пакет composer с packagist - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь настроить пакет composer, но я не могу загрузить его, когда я пробую его из нового проекта

мой пакет здесь https://github.com/shorif2000/pagination и сборщик пакетов здесьhttps://packagist.org/packages/shorif2000/pagination

в новом проекте, который у меня есть

{
    "name": "ec2-user/pagination",
    "authors": [
        {
            "name": "shorif2000",
            "email": "shorif2000@gmail.com"
        }
    ],
    "require": {
        "shorif2000/pagination": "dev-master"
    },
    "minimum-stability" : "dev"
}

$ cat index.php
<?php

require './vendor/autoload.php';

use Pagination\Paginator;

$totalItems = 1000;
$itemsPerPage = 50;
$currentPage = 8;
$urlPattern = '/foo/page/(:num)';

$paginator = new Paginator($totalItems, $itemsPerPage, $currentPage, $urlPattern);

?>
<html>
  <head>
    <!-- The default, built-in template supports the Twitter Bootstrap pagination styles. -->
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  </head>
  <body>

    <?php
      // Example of rendering the pagination control with the built-in template.
      // See below for information about using other templates or custom rendering.

      echo $paginator;
    ?>

  </body>
</html>

, происходит сбой с ошибкой Fatal error: Uncaught Error: Class 'Pagination\Paginator' not found in /opt/pagination/index.php:12 Stack trace: #0 {main} thrown in /opt/pagination/index.php on line 12. Я попытался use shorif2000\Pagination\Paginator;, который также дал ту же ошибку

1 Ответ

1 голос
/ 01 ноября 2019

Здесь более одной проблемы.

composer.json (пакет)

В вашем файле композитора (для библиотеки Pagination) измените PSR-0 на PSR-4. PSR-0 - это старый формат, который устарел около 5 лет назад (2014 г.).

Подробнее о PSR-4 см. Здесь

Вы также всегда должны заканчивать пространство именс \\. Таким образом, пакет должен быть:

"autoload" : {
    "psr-4" : {
        "Pagination\\" : "src/"
    }
},

Подробнее об автозагрузке композитора здесь

Пространства имен

Поскольку ваше пространство имен равно Pagination\,это пространство имен, которое вы должны использовать в коде, который его использует.

Так что если у вас есть класс с:

namespace Pagination;

class Pagination {
    ...
}

, тогда ваш оператор use должен просто выглядеть так:

use Pagination\Pagination;

Подробнее о пространствах имен PHP см. Здесь

shorif2000 - это имя поставщика (оно предназначено только для того, чтобы композитор мог группировать пакеты по имени поставщика и удалятьриск того, что разные пакеты будут перезаписывать друг друга.

Подробнее о названии поставщика композитора здесь

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