Я создаю проект на основе фреймворка Laravel и использую для этого PhpStorm.По умолчанию Laravel имеет следующие настройки, если мы включаем плагин Laravel в PhpStorm.
Теперь на основе этих настроек, если я создаю модель и пытаюсьопределить все отношения и другие свойства следующим образом:
<?php
/**
* Class User
*
* @package App\Http\Entities
* @property int $id
* @property mixed $posts
*/
class User extends Model
{
/**
* The table associated with the model
*
* @var string
*/
protected $table = 'users';
/**
* Indicates if model should be timestampped
*
* @var bool
*/
public $timestamps = false;
/**
* The attributes are not mass assignable
*
* @var array
*/
protected $guarded = ['type'];
/**
* Get all the posts for a user
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function posts()
{
return $this->hasMany('App\Http\Entities\Post');
}
}
Автоматически мне нужно добавить все аннотации для класса, или предупреждение отображается PhpStorm, что, очевидно, связано с тем, что настройки включены, если я их отключил.ушел также.
Но мне любопытно узнать, что они на самом деле представляют, поскольку у него должна быть какая-то причина, если она была установлена по умолчанию.Также при написании других моделей я заметил, что когда я определил функцию внутри модели, подобную этой
public function userComments()
{
return $this->hasMany('Some model');
}
В аннотации она была установлена примерно так:
/**
* @property $user_comments
*/
Теперь, во-первых, это былофункции, а также для описанных выше случаев, когда я определил функцию post (), аннотация была установлена как @ property , что снова меня смущает.Во-вторых, мне нравится определять мою переменную, а также функцию для camelCase , но из-за всей этой аннотации, установленной в верхней части класса как snake_case, мне почему-то это не нравится.
Таквсе, что я хочу знать, это то, что они в основном и какова цель определения их и что они представляют.
PS Это мой самый первый проект с Laravel Framework, и я знаю, что это связано с PHPДокументация и все остальное, но я никогда ранее не документировал свой код.Так что любое предложение будет полезно.