Завершите PHPDOC, непосредственно из источника
Этот пакет генерирует вспомогательные файлы, которые позволяют вашей IDE обеспечить точное автозаполнение. Поколение выполняется на основе файлов в вашем проекте, поэтому они всегда в курсе.
Отсутствие 3.x поддерживает Laravel 10 и 11. Для более старой версии используйте 2.x релизы.
Требовать этот пакет с композитором, используя следующую команду:
composer require --dev barryvdh/laravel-ide-helperПримечание
Если вы столкнетесь с версией конфликта с доктриной/dbal, попробуйте: composer require --dev barryvdh/laravel-ide-helper --with-all-dependencies
В этом пакете используется механизм автоматического открытия Laravels, а это означает, что если вы не установите зависимости Dev в производство, он также не будет загружен.
Если по какой -то причине вы хотите вручную контролировать это:
extra.laravel.dont-discover ключ в composer.json , например, "extra" : {
"laravel" : {
"dont-discover" : [
" barryvdh/laravel-ide-helper "
]
}
}providers в config/app.php : Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class,AppServiceProvider с помощью метода register() : public function register ()
{
if ( $ this -> app -> isLocal ()) {
$ this -> app -> register ( Barryvdh LaravelIdeHelper IdeHelperServiceProvider ::class);
}
// ...
}Примечание. Избегайте кэширования конфигурации в вашей среде разработки, это может вызвать проблемы после установки этого пакета; Соответственно, проясните кэш заранее через
php artisan cache:clear, если вы столкнетесь с проблемами при выполнении команд
Проверьте это видео Laracasts для быстрого введения/объяснения!
php artisan ide-helper:generate - Generation Phpdoc Generation для фасадов Laravelphp artisan ide-helper:models - PHPDOC для моделейphp artisan ide-helper:meta - Meta -Phpstorm MetaifleПримечание. Вам нужен кодек -комплексный
Теперь вы можете переиграть документы самостоятельно (для будущих обновлений)
php artisan ide-helper:generate Примечание: bootstrap/compiled.php должен быть очищен в первую очередь, поэтому запустите php artisan clear-compiled прежде чем генерировать.
Это будет генерировать файл _ide_helper.php , который, как ожидается, будет дополнительно проанализировано с помощью вашего IDE для автозаполнения. Вы можете использовать имя filename конфигурации, чтобы изменить его имя.
Вы можете настроить свой composer.json , чтобы делать это каждый раз, когда вы обновляете свои зависимости:
"scripts" : {
"post-update-cmd" : [
"Illuminate\Foundation\ComposerScripts::postUpdate" ,
"@php artisan ide-helper:generate" ,
"@php artisan ide-helper:meta"
]
} , Вы также можете опубликовать файл конфигурации, чтобы изменить реализации (т.е. интерфейс для конкретного класса) или установить по умолчанию по умолчанию для --helpers .
php artisan vendor:publish --provider= " BarryvdhLaravelIdeHelperIdeHelperServiceProvider " --tag=configГенератор пытается идентифицировать реальный класс, но если его нельзя найти, вы можете определить его в файле конфигурации.
Некоторые классы нуждаются в подключении к рабочей базе данных. Если у вас нет рабочего соединения по умолчанию, некоторые фасады не будут включены. Вы можете использовать драйвер SQLite в памяти, добавив опцию -M .
Если вы используете фасады в режиме реального времени в своем приложении, они также будут включены в сгенерированный файл, используя аннотацию @mixin и расширение оригинального класса под фасадом.
Примечание . Эта функция использует сгенерированные файлы фасадов в реальном времени в папке storage/framework/cache . Эти файлы генерируются по требованию, поскольку вы используете фасад в реальном времени, поэтому, если структура не сгенерировала, сначала он не будет включен в файл помощника. Сначала запустите маршрут/команду/код, а затем восстановите вспомогательный файл, и на этот раз в него будет включен фасад в реальном времени.
Вы можете включить вспомогательные файлы. Это не включено по умолчанию, но вы можете переопределить его с помощью опции --helpers (-H) . Illuminate/Support/helpers.php уже настроен, но вы можете добавить/удалить свои собственные файлы в файл конфигурации.
Этот пакет может генерировать PHPDOC для макросов и микшинов, которые будут добавлены в файл _ide_helper.php .
Но это работает только в том случае, если вы используете подсказку типа при объявлении макроса.
Str :: macro ( ' concat ' , function ( string $ str1 , string $ str2 ) : string {
return $ str1 . $ str2 ;
}); Если вы не хотите писать свои свойства самостоятельно, вы можете использовать команду php artisan ide-helper:models для генерации PHPDOC, основанных на столбцах таблиц, отношений и сеттеров/сеттеров.
Примечание. Эта команда требует подключения к рабочей базе данных, чтобы интоцировать таблицу каждой модели
По умолчанию вас просят перезаписать или записать в отдельный файл ( _ide_helper_models.php ). Вы можете написать комментарии непосредственно в ваш файл модели, используя опцию --write (-W) или заставлять не писать с помощью --nowrite (-N) .
В качестве альтернативы, используя опцию --write-mixin (-M) добавит только тег Mixin в файл модели, написав остальные в ( _ide_helper_models.php ). Имя класса будет отличаться от модели, избегая дублирования IDE.
Пожалуйста, не забудьте резервное копирование ваших моделей, прежде чем написать информацию.
Написание моделей должно сохранять существующие комментарии и добавлять только новые свойства/методы. Он не будет обновлять измененные свойства/методы.
С помощью опции --reset (-R) весь существующий PhpDoc заменяется, включая любые комментарии, которые были сделаны.
php artisan ide-helper:models " AppModelsPost " /**
* AppModelsPost
*
* @property integer $id
* @property integer $author_id
* @property string $title
* @property string $text
* @property IlluminateSupportCarbon $created_at
* @property IlluminateSupportCarbon $updated_at
* @property-read User $author
* @property-read IlluminateDatabaseEloquentCollection|Comment[] $comments
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost newModelQuery()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost newQuery()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost query()
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost whereTitle($value)
* @method static IlluminateDatabaseEloquentBuilder<static>|AppModelsPost forAuthors(User ...$authors)
* …
*/ С опцией --write-mixin (-M)
/**
* …
* @mixin IdeHelperPost
*/ По умолчанию модели в app/models сканируются. Необязательный аргумент рассказывает, какие модели использовать (также внешнее приложение/модели).
php artisan ide-helper:models " AppModelsPost " " AppModelsUser " Вы также можете сканировать другой каталог, используя опцию --dir (относительно по базовому пути):
php artisan ide-helper:models --dir= " path/to/models " --dir= " app/src/Model " Вы можете опубликовать файл конфигурации ( php artisan vendor:publish ) и установить каталоги по умолчанию.
Модели могут быть проигнорированы с использованием опции --ignore (-I)
php artisan ide-helper:models --ignore= " AppModelsPost,AppModelsUser " Или может быть проигнорирован, установив конфигурацию ignored_models
' ignored_models ' => [
App Post ::class,
Api User ::class
],where* методы Eloafent позволяет вызовать, where<Attribute> на ваших моделях, например, Post::whereTitle(…) и автоматически переводит это в EG Post::where('title', '=', '…') .
Если по какой -то причине нельзя сгенерировать их (по одному для каждого столбца), вы можете отключить это через config write_model_magic_where и установить его на false .
*_count Свойства Вы можете использовать метод ::withCount чтобы подсчитать число, возникающее в результате отношений, не загружая их. Эти результаты затем помещаются в атрибуты после соглашения <columname>_count .
По умолчанию эти атрибуты генерируются в PHPDOC. Вы можете отключить их, установив конфигурацию write_model_relation_count_properties на false .
Laravel 9 представил аннотации Generics в Docblocks для коллекций. Phpstorm 2022.3 и выше поддерживают использование аннотаций Generics в объявлениях @property и @property-read в Docblocks, например, Collection<User> вместо Collection|User[] .
Это может быть отключено, установив конфигурацию use_generics_annotations на false .
@comment на основе Docblock Чтобы лучше поддерживать IDE, отношения и сеттеры/сетевые сеттеры также могут добавить комментарий к свойству, подобным столбцам таблицы. Поэтому используется пользовательский Docblock @comment :
class Users extends Model
{
/**
* @comment Get User's full name
*
* @return string
*/
public function getFullNameAttribute (): string
{
return $ this -> first_name . ' ' . $ this -> last_name ;
}
}
// => after generate models
/**
* AppModelsUsers
*
* @property-read string $full_name Get User's full name
* …
*/ Был добавлен новый метод для красноречивых моделей, называемый ссылкой на newEloquentBuilder , где мы можем добавить поддержку для создания нового выделенного класса вместо использования локальных областей в самой модели.
Если по какой -то причине нельзя сгенерировать их (по одному для каждого столбца), вы можете отключить это через config write_model_external_builder_methods и установить его на false .
Если вы используете отношения, не встроенные в Laravel, вам нужно будет указать имя и возвращение класса в конфигурации, чтобы получить правильное генерацию.
' additional_relation_types ' => [
' externalHasMany ' => My Package externalHasMany::class
],Обнаруженные отношения обычно генерируют возвратное значение на основе имени отношений.
Если ваши пользовательские отношения не следуют этой традиционной схеме именования, вы можете определить его тип возврата вручную. Доступных вариантов many и morphTo .
' additional_relation_return_types ' => [
' externalHasMultiple ' => ' many '
], Если вам нужна дополнительная информация о вашей модели из источников, которые не обрабатываются по умолчанию, вы можете подключиться к процессу генерации с помощью модельных крючков, чтобы добавить дополнительную информацию на лету. Просто создайте класс, который реализует ModelHookInterface и добавьте его в массив model_hooks в конфигурации:
' model_hooks ' => [
MyCustomHook ::class,
], Метод run будет вызван во время генерации для каждой модели и получает текущий запуск ModelsCommand и текущую Model , например:
class MyCustomHook implements ModelHookInterface
{
public function run ( ModelsCommand $ command , Model $ model ): void
{
if (! $ model instanceof MyModel ) {
return ;
}
$ command -> setProperty ( ' custom ' , ' string ' , true , false , ' My custom property ' );
$ command -> unsetMethod ( ' method ' );
$ command -> setMethod ( ' method ' , $ command -> getMethodType ( $ model , ' SomeClass ' ), [ ' $param ' ]);
}
}/**
* MyModel
*
* @property integer $ id
* @property-read string $ customЕсли вам нужна поддержка PHPDOCS для методов бегства при миграции, например,
$ table -> string ( " somestring " )-> nullable ()-> index (); После публикации поставщика просто измените строку include_fluent в вашем файле config/ide-helper.php на:
' include_fluent ' => true , Затем запустите php artisan ide-helper:generate , теперь вы увидите все методы бегства, расположенные вашим IDE.
Если вы хотите, чтобы factory()->create() и factory()->make() методы возврата правильного класса модели, вы можете включить пользовательские строители фабрики с линейкой include_factory_builders в вашем файле config/ide-helper.php Полем Умерен для Laravel 8 или Last.
' include_factory_builders ' => true ,Чтобы это работало, вы также должны опубликовать Meta -File Phpstorm (см. Ниже).
Можно сгенерировать мета -файл Phpstorm, чтобы добавить поддержку заводского дизайна. Для Ларавела это означает, что мы можем заставить Phpstorm понять, какой объект мы решаем из контейнера IOC. Например, events возвращают объект IlluminateEventsDispatcher , поэтому с помощью метафалита вы можете вызвать app('events') , и он будет автозаполнять методы диспетчера.
php artisan ide-helper:meta app ( ' events ' )-> fire ();
App :: make ( ' events ' )-> fire ();
/** @var IlluminateFoundationApplication $app */
$ app -> make ( ' events ' )-> fire ();
// When the key is not found, it uses the argument as class name
app ( ' AppSomeClass ' );
// Also works with
app ( App SomeClass ::class);Примечание: вам может потребоваться перезапустить Phpstorm и убедиться, что
.phpstorm.meta.phpиндексирован.ПРИМЕЧАНИЕ. Когда вы получаете Fatalexception: класс не найден, проверьте свою конфигурацию (например, удалите S3 как облачный драйвер, когда у вас не настроен S3. Удалите Redis ServiceProvider, когда вы его не используете).
Вы можете изменить сгенерированное имя файла через конфигурацию meta_filename . Это может быть полезно для тех случаев, когда вы хотите воспользоваться поддержкой Phpstorm Directory .phpstorm.meta.php/ : Все файлы, размещенные там, проанализированы, если вы хотите предоставить дополнительные файлы в Phpstorm.
Генератор Hervel IDE IDE имеет программное обеспечение с открытым исходным кодом, лицензировано по лицензии MIT