Nano Hash - криптовалюты, майнинг, программирование

Автозагрузка Composer PHP не работает

для моей WebPanel я создал библиотеку, я могу без проблем установить ее через композитор, но когда я хочу реализовать свой интерфейс под названием View, я получил следующее сообщение об ошибке:

`2017/06/22 16:00:22 [error] 23179#23179: *120 FastCGI sent in stderr: "PHP 
message: PHP Fatal error:  Interface 'RaphaelScheinkoenig\WebLib\View' not 
found in /var/www/site/app/view/DashboardView.php on line 10" while reading 
response header from upstream, client: 88.xx.xxx.xxx, server: 
xxxxxx.xxxxxx.xxxxx, request: "GET /dashboard HTTP/1.1", upstream: 
"fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "xxxxxx.xxxxxx.xxxxx"`

Composer.json библиотеки:

`{
 "name": "raphaelscheinkoenig/weblib",
 "description": "WebLib",
 "license": "MIT",
 "authors": [
{
  "name": "Raphael Scheinkoenig",
  "email": "[email protected]"
}
],
"minimum-stability": "stable",
"require": {
"php": ">=7.0.0"
},
"autoload": {
"psr-0": {
  "RaphaelScheinkoenig\\WebLib\\": "src/"
 }
 } 
 }`

Дерево папок библиотеки: http://prntscr.com/fmwu6o

View.php библиотеки:

`<?php
namespace RaphaelScheinkoenig\WebLib;
interface View{
public function getTitle():string;
public function getCSSPlugins():string;
public function getJsHeadScripts():string;
public function getContent():string;
public function getJSPlugins():string;
public function getActiveHeader():string;
public function getPluginInitialization():string;
public function getGoogleAnalytics():string;
public function getHeaderKey():string;
public function getFooter():string;
public function getPageHeader():string;
}`

Реализация DasbordView.php в веб-панели:

require_once ($_SERVER["P_PATH"]."vendor/autoload.php");
class DashboardView implements RaphaelScheinkoenig\WebLib\View
{
public function getTitle():string{
    return "Dashboard";
}

public function getCSSPlugins():string{
    $str = '<link rel="stylesheet" href="'.$_SERVER['P_PATH'].'assets/globals/css/plugins.css">';
    return $str;
}

public function getPageHeader():string{
    return "Dashboard";
}

public function getJsHeadScripts():string{
    return "";
}

public function getContent():string{
    // TODO: Implement getContent() method.
}

public function getJSPlugins():string{
    $str = '<script src="'.$_SERVER['P_PATH'].'assets/admin1/js/layout.js"></script>';
    return $str;
}

public function getActiveHeader():string{
    return "Dashboard";

}

public function getPluginInitialization():string{

    $str = "<script>
            $(document).ready(function () {
            Layout.init();
            });
            </script>";
    return $str;

}

public function getGoogleAnalytics():string{
    $str = "";
    return $str;
}

public function getHeaderKey():string{
    return "Dashboard";
}

public function getFooter():string{
     $str = '';
    return $str;
}}

` Заранее спасибо за помощь.

Рафаэль Шейнкениг

22.06.2017

  • Куда вы положили View.php? Поделитесь деревом вашей папки. 22.06.2017
  • добавлено дерево библиотеки выше 22.06.2017
  • Тогда вы можете использовать psr-4 вместо psr-0. Измените его в файле composer.json и перестройте автозагрузчик. 22.06.2017

Ответы:


1

Для psr-0 вы должны поместить RaphaelScheinkoenig\WebLib\View (View.php) в папку src/RaphaelScheinkoenig/WebLib.

К вашему сведению, psr-0 помечен как устаревший. Итак, просто используйте psr-4. И если вы используете psr-4, вам не нужно создавать папку src/RaphaelScheinkoenig/WebLib.

23.06.2017

2

Настройте конфигурацию автозагрузки в composer.json, чтобы использовать PSR-4 вместо PSR-0 (как уже предлагалось в комментариях):

{
    "name": "raphaelscheinkoenig/weblib",
    "description": "WebLib",
    "license": "MIT",
    "authors": [
        {
            "name": "Raphael Scheinkoenig",
            "email": "[email protected]"
        }
    ],
    "minimum-stability": "stable",
    "require": {
        "php": ">=7.0.0"
    },
    "autoload": {
        "psr-4": {
            "RaphaelScheinkoenig\\WebLib\\": "src/"
         }
     } 
}

Для справки см.

24.06.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..