PHP:Имеет ли право на жизнь такой код?
в корне сайта лежит index.php и в нем указываем директорию (host не http) сайта
PHP:
$app = $service( ‘crm’ ); $app -> repository -> set( ‘app.system.directory.site’, __DIR__ ); $app -> kernel -> send();service.php
PHP:
<?php use Nouvu\Framework\Foundation\Application; $composer = require ‘vendor/autoload.php’; return static function ( string $name ) use ( $composer ): Application { $composer -> addPsr4( \Nouvu\Resources :: class . ‘\\’, __DIR__ . «/{$name}/Resources» ); return new Application( new \Nouvu\Container\Container, include __DIR__ . «/{$name}/tools.php» ); };на Resources не смотреть. Лень переписывать говно
@MouseZver у меня index.php лежит в public
PHP:
include $file; } }); App::create()->run();хочу заюзать абсолютные пути с «справильными» слешами
p.s. практикуюсь
никогда не используй в своем коде spl_autoload_register и подобное. Когда будешь composer юзать, поймешь.
твое приложение должно заготавливать с «правильными» слешами, при чтении конфигов с файлов и сейва в config()
— Добавлено —PHP:
/* — */ \Repository :: class => static function ( ContainerInterface $container ) { // use in each config $app = $container -> get( ‘app’ ); $repository = new \Nouvu\Framework\Component\Config\Repository; { } $repository -> set( ‘app.system.directory’, [ ] ); return $repository; },
@MouseZver
/Configs/*.php
‘Resources/View/
‘Resources/System/Helpers/’тут вручную слеши проставлены
и множественное использование dirname()
да, самый правильный слэш — это «/». Все, победа.
PHP:
не ну это для слабаков
а так-то понятно, что работать прямые будут и там и там
@MouseZver а почему dirname(__FILE__) вместо __DIR__?
__DIR__ ведь уже готова, а dirname(__FILE__) ты вычисляешь, а это __DIR__ и есть
— Добавлено —ага, видел такой фокус, собираю такие
а что легче: implode (join) или sprintf?
__FILE__ раньше появилась. В старом коде часто встречается. Или для совместимости.
— Добавлено —А public чЁ не корень? Вообще у профи фронт лежит вне корня
— Добавлено —
Корень – это «свалка» для публичного статика.
— Добавлено —
Если паблик статик хранится на отдельном хосте, то корень вообще может быть пустым. Файлы типа роботс отдаются фронтом.
ну это 5.2
ну так ROOT и выйдет туда, не?
ROOT’ом принято называть корень. Каталогу над корнем придумай др. название.
а кто меня пустит выше корня на хостинге, если сервак не мой)))
ROOT — ***/***/***/domain.name
public — ***/***/***/domain.name/public
— Добавлено —
@miketomlinROOT — это корень сайта (может быть DOCUMENT_ROOT, а может и не быть)
public — текущая рабочая директория (может быть DOCUMENT_ROOT, а может и не быть — штекером прислали сюда)
PHP:
Это хрень. Или делай public корнем, или размещай код вне корня. Фронт вынужденно можно оставить в корне, но только его.
Т.е. можно переместить фронт в паблик (как реальный корень), но не надо пытаться делать воображаемый корень вместо реального.
ну так и сделано, мне теперь нужно от корня подключать код, я же в public сижу))) у меня DOCUMENT_ROOT — домен, а текущая рабочая папка — public
потому что не все имеют доступ к редактированию хостов, чтобы сервак сразу в public смотрел у него))) поэтому предусмотрен вариант с перенаправлением по штекеру
чтобы потом не было вот такого — https://yandex.by/search/?text=laravel+public+htaccess&lr=26009&clid=2411726&src=suggest_B
— Добавлено —я понял про что ты, я могу и по chdir() поменять рабочий каталог, но это лайфхак, хотелось бы заюзать абсолютные пути с правильными слешами, но из кода получается нагромождение константами, я такое не воспринимаю
Размещай код в каталоге рядом с корнем. Хотя сейчас много вменяемых хостингов, которые рубят фишку и делают корнем domain.name/public
Это заглушка для лохов! Не для реального применения
@miketomlin да не в этом вопрос
вопрос в том, что, если я константу из вопроса определяю в domain.name/index.php или в domain.name/public/index.php или еще где-то в любом месте скрипта, то она всегда будет иметь значение — ***абсолютный_путь/domain.name, то есть всегда показывает корень сайта, где бы я её не определил, то есть как бы ЛОХ не перемещал скрипт, то она всегда будет правильно смотреть в корень
то есть можно ли таким программным расчётам доверять, универсальна ли она на самом деле?
Нет, конечно. Корень может быть и ***/domain.name, и ***/domain.name/public, и ***/domain.name/ХЗЧ, и ХЗЧ вместо domain.name, если я правильно тебя понял. Поэтому в скрипте, запускаемом сервером, можно использовать $_SERVER[‘DOCUMENT_ROOT’]
В этом нет ничего зазорного.
— Добавлено —
Т.к. сам фронт может «курсировать» между корнем и, например, каталогом над корнем, ты не вычислишь корень по SCRIPT_FILENAME
— Добавлено —
Т.е. формула все равно будет зависеть от местоположения корня относительно фронта (фронта относительно корня).
если у меня DOCUMENT_ROOT — смотрит в public, то мне нужно на уровень выше выходить — В КОРЕНЬ сайта, чтобы подключать остальное — ПРАВИЛЬНО)))
константа из вопроса всегда смотрит В КОРЕНЬ САЙТА)
подключая скрипты мне не нужно делать DOCUMENT_ROOT . ‘/../’, я просто делаю ROOT
понял суть?
если даже где-то бутстрап у меня на несколько уровней ушёл вниз от корня сайта и я там определил константу, потом подключаю бутстрап в любом месте, то у меня константа будет правильно подключать остальное, отстчёт будет всегда от корня сайта — он расчитывается программно, независимо от местоположения файла, в котором определена константа, достаточно подключить файл с определением константы, где бы он не находился
— Добавлено —
@miketomlin***/***/***/***/domain.name/***/***/***/***/file.php — файл в котором константа
include ‘***/***/***/***/domain.name/***/***/***/***/file.php’;
ROOT — ***/***/***/***/domain.name
***/***/***/***/domain.name/***/file.php — файл в котором константа
include ‘***/***/***/***/domain.name/***/file.php’;
ROOT — ***/***/***/***/domain.name
)))
Ты чЁ корнем сайта называешь каталог проекта? Корень сайта определяется соотв. директивой сервера.