PHP: <?php use UmiCms\Service; class Kss_fanexpressShophelpOrderPublic implements iModulePart { use baseModuleAdmin; use tModulePart; . . . } ?> Как определить в каких файлах объявлены пространства имен? (кроме поиска) Файл autoload.php : PHP: <?php $classes = [ 'fe_delivery' => [ __DIR__ . '/classes/fe_delivery/fe_delivery.php' ], 'fe_shophelp' => [ __DIR__ . '/classes/fe_shophelp/fe_shophelp.php' ], 'fe_queue_tasks' => [ __DIR__ . '/classes/fe_queue_tasks/fe_queue_tasks.php' ], 'fe_jsonrpc_client' => [// Надо отключить __DIR__ . '/classes/fe_jsonrpc/fe_jsonrpc_client.php' ], 'fe_jsonrpc_response' => [// Надо отключить __DIR__ . '/classes/fe_jsonrpc/fe_jsonrpc_response.php' ], 'fe_kladr' => [ __DIR__ . '/classes/fe_kladr/fe_kladr.php' ], 'fe_shopfans' => [ __DIR__ . '/classes/fe_shopfans/fe_shopfans.php' ], 'fe_ishiping' => [ __DIR__ . '/classes/fe_shiping/fe_ishiping.php' ], 'fe_shiping_collection' => [ __DIR__ . '/classes/fe_shiping/fe_shiping_collection.php' ], ];
Сам фреймворк их находит (авто-лоадит) и этого достаточно. Определять где какой файл это работа для машин, а не для людей. Нормальные IDE умеют индексировать весь проект и моментально находить класс. В PhpStorm, например, два раза нажимаешь Shift и потом набираешь имя класса, если надо с его пространством имён — он моментально показывает варианты в которые можно "провалиться". Или по Cmd+click на имени класса можно перепрыгнуть в его файл. Если тебя интересует как самому следовать стандартам, то почитай эти стандарты: https://svyatoslav.biz/misc/psr_translation/ Про Umi не знаю, помоему это какая-то дрянь из 90-х и стандартам врядли следует.
Ничего не значит. Неймспейс это часть имени. — Что значит, когда нэймспейс имя юзается внутри класса? — … ?
namespace -> это путь к вашему классу в котором вы находитесь от корня а use -> это путь к той классе с которого хотите работать в нонешним классе проще говоря это метод в ооп подобному include
Неймспейс это не метод и никак не подобен include. Это часть имени класса. В известном контексте эту часть имени можно НЕ упоминать. Она всё равно есть, но мы можем её пропустить при обращении к классам в том же неймспейсе. Команда use не выполняет никакой другой работы кроме как создаёт "псевдоним" для упомянутого класса чтобы опять же можно было обратиться к нему кратко. Ничего в самом use не инклудится. --- Добавлено --- Сферический пример: PHP: <?php namespace App\Ololo; use App\Zhopa\Piska; // в этот момент НИЧЕГО не выполняется. этого класса может вообще не существовать, ошибка не возникнет! class Pysh // полное имя этого класса \App\Ololo\Pysh { ... public function Foo() { // Ниже будет обращение к нескольким классам БЕЗ упоминания их неймспейса. Что же произойдёт? echo Abracadabra::class; // Выведется "App\Ololo\Abracadabra" потому что неявно используется текущий namespace. // А т.к. мы не создаём инстанс, класс не будет искаться и загружаться, ошибка не произойдёт даже если класс Abracadabra не существует! echo X\Y\Z::class; // Выведется "App\Ololo\X\Y\Z" потому что неявно используется текущий namespace. Снова неважно существует класс или нет. echo \X\Y\Z::class; // Выведется "X\Y\Z" потому что символ "\" в начале обнулил наш неймспейс $p = new Piska(); // PHP понимает что имеется в виду класс \App\Zhopa\Piska потому что выше был use для этого имени. // Только в этот момент автолоадер попытается найти и загрузить файл с классом // Если класса нет, то будет ошибка } }
artoodetoo Вы абсолютно правы но если человек вообще преставление не имеет о ооп то ему эти тонкости не чего не скажут , он прочитает ваши объяснение и ничего не поймет для чего импортируются пространство имен как может какой то класс наследоваться од другого класса и многое другое. Я очень надеюсь что он хот процедурный подход знает.
Подозреваю, что ни один программист не использует возможности шторма на 100%. Их там столько, что голова кругом.