Laravel аннотация для моделей в PhpStorm - PullRequest
0 голосов
/ 25 мая 2018

Я создаю проект на основе фреймворка Laravel и использую для этого PhpStorm.По умолчанию Laravel имеет следующие настройки, если мы включаем плагин Laravel в PhpStorm.

PhpStorm Settings

Теперь на основе этих настроек, если я создаю модель и пытаюсьопределить все отношения и другие свойства следующим образом:

<?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Документация и все остальное, но я никогда ранее не документировал свой код.Так что любое предложение будет полезно.

...