Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356

Composer, генерация автолоадера

18.04.2017, 18:14. Показов 1870. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать такой пусть для автолоадера.

Вот структура




-> vendor\ это папка composer

В этой папке будут лежать все загруженные библиотеки через composer.

Все это лежит в папке system

В base\ -> namespase base;
В components\ -> namespace components;
в frontend\ -> namespace frontend;
в frontend\controllers -> namespace frontend\controller;

Вот надо что бы при base\Classname OR base\namespase\ClassName я все это подключал из :
  • site.domen/system/base/ClassName.php
  • site.domen/system/base/namespase/ClassName.php

Вот как в composer.json прописать это
Т.к сейчас он ищет вот так \system\vendor\composer/ А нужно указать что нужно выйти из папки vendor
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2017, 18:14
Ответы с готовыми решениями:

Composer найти зависимость
Всем привет! Есть сайт, на нем куча вещей установлена с помощью composer. И сейчас, если надо сделать composer update, то он долго-долго...

Composer и phalcon/incubator
Может кто сказать что я не так пишу в composer.json, что выдает ошибку (на скрине) "require": { "php":...

Установка phpword через composer
Помогите, пожалуйста, не могу найти в чем проблема, при установке phpword через composer выдает ошибку: ...

8
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.04.2017, 18:19
Цитата Сообщение от maruo Посмотреть сообщение
Вот как в composer.json прописать это
как то так
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
  "name": "max-dark/noname-dev",
  "description": "noname dev site",
  "minimum-stability": "stable",
  "license": "MIT",
  "authors": [
    {
      "name": "Max Dark",
      "email": "max@node.dev"
    }
  ],
  "require": {
    "php": ">=7.0"
  },
  "autoload": {
    "psr-4": {
      "base\\": "system/base",
      "components\\": "system/components"
    }
  }
}
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
18.04.2017, 18:47  [ТС]
Max Dark, '\system\vendor\composer/../../system/base\Component.php'
Вот где он ищет попробовал ваш вариант

Добавлено через 19 минут
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"autoload": {
        "psr-4": {
          "base\": "../system/base",
          "components\": "../system/components",
          "core\": "../system/core",
          "widgets\": "../system/widgets",
          "frontend\": "../system/frontend",
          "backend\": "../system/backend",
          "helpers\": "../system/helpers",
          "database\": "../system/database",
          "web\": "../system/web",
          "i\": "../system/i"
        }
    }
Сделал так, работает, но не слишком ли это? или это нормально?
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.04.2017, 19:02
Лучший ответ Сообщение было отмечено maruo как решение

Решение

maruo, так у вас все в папке system?
тогда так
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
"autoload": {
        "psr-4": {
          "base\\": "base",
          "components\\": "components",
          "core\\": "core",
          "widgets\\": "widgets",
          "frontend\\": "frontend",
          "backend\\": "backend",
          "helpers\\": "helpers",
          "database\\": "database",
          "web\\": "web",
          "i\\": "i"
        }
    }
1
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
18.04.2017, 19:09  [ТС]
Max Dark, хм, работает, хорошо, благодарю, думаю больше вопросов не будет
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.04.2017, 19:12
maruo, можно сделать
JSON
1
2
3
4
5
"autoload": {
        "psr-4": {
          "\\": "./"
        }
    }
но это не рекомендуется, на сколько я помню.
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
18.04.2017, 19:18  [ТС]
Max Dark, Вот это было бы круто, потому что у меня раньше стоял такой автолоадер
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
namespace core;
 
class Autoloader {
        
    const debug = true;
 
    public static function autoload($class){
        $path = dirname(__DIR__).'/'.$class.'.php';
            if(file_exists($path)){
                require($path);
            }else{
                if(Autoloader::debug){  
                    Autoloader::debug("[ERROR] Class $class not Found: => ".$path);
                }
                return;
            }
    }
 
    public static function debug ($data){
        file_put_contents(dirname(__DIR__).'/debug.txt', $data."\n",FILE_APPEND);
    }
}
 
 
spl_autoload_register('core\Autoloader::autoload',true,true);
Ничего прописывать не надо было никуда.

И он классно справлялся, до тех пока мне не пришлось подключать сторонние библиотеки. Там уже если я клал все библиотеки допустим в папку componetns , то надо любой библиотеке было дописывать namespase's . Хорошо когда библиотека маленькая из 1-2 файла. А вот подключил большую, а там столько файлов и гемор вообщем . Пытался решить, В итоге решил прибегнуть к composer autoloader
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
18.04.2017, 19:35
maruo, если библиотеки устанавливаются с помощью composer, то он автоматически прописывает пути до них, а сами библиотеки помещаются в vendor/author/LibName
требуется только в composer.json в секции "require" прописать названия пакетов и их версии.
JSON
1
2
3
4
"require": {
  "php": ">=5.6.4",
  "author/cool-lib": "~1.0.1"
}
ну и дать команду
Bash
1
composer install
справка по команде:
Bash
1
2
3
4
5
6
composer help install
Usage:
  install [options] [--] [<packages>]...
 
Arguments:
  packages                       Should not be provided, use composer require instead to add a given package to composer.json.
0
 Аватар для maruo
133 / 133 / 48
Регистрация: 26.04.2013
Сообщений: 1,356
18.04.2017, 19:54  [ТС]
Max Dark,
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
    "autoload": {
        "psr-4": {
          "base\": "base",
          "components\": "components",
          "core\": "core",
          "widgets\": "widgets",
          "frontend\": "frontend",
          "backend\": "backend",
          "helpers\": "helpers",
          "database\": "database",
          "web\": "web",
          "i\": "i"
        }
    },
    "require": {
        "cboden/ratchet": "0.3.*",
        "react/zmq": "0.2.*|0.3.*"
    }
}
Ну вот так это выглядит
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2017, 19:54
Помогаю со студенческими работами здесь

Как запустить Composer в cmd wondows ?
Помогите разобраться в такой команде &quot; echo @php &quot;%~dp0composer.phar&quot; %*&gt;composer.bat &quot; Дело в том, что у меня встал вопрос по поводу...

Composer
Добрый день.Кто знает почему не работает консоль от openserver,я имею ввиду кто сталкивался с этим.Я хочу установить расширение,пишу путь...

Сделать composer пакет
Добрый вечер. Получил задание следующего содержания: Сделать composer пакет “заметки”. В рамках пакета, нужно реализовать следующее: ...

Установка composer в Open Server
Всем привет только начал работать с Open Server и возник вопрос пытаюсь установить композер composer init а он просит какие то...

Как установить composer на хостинг?
Друзья, помогите разобраться в вопросе)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru