Завершите 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