Maison >développement back-end >tutoriel php >Rationalisez vos modèles Laravel avec des attributs chaînables
Le convertisseur de type AsStringable
de Laravel est un outil puissant qui améliore considérablement la façon dont vous gérez les propriétés de chaîne dans votre modèle éloquent. En convertissant les propriétés de chaîne en objets Stringable
, vous pouvez accéder à un grand nombre de méthodes de manipulation de chaîne pour écrire un nettoyant et un code plus expressif.
Cette méthode est particulièrement utile pour les applications à forte intensité de contenu où les opérations de chaîne sont fréquentes, contribuant à garder le contrôleur et à afficher le rangement.
use Illuminate\Database\Eloquent\Casts\AsStringable; class Post extends Model { protected function casts(): array { return [ 'title' => AsStringable::class, 'content' => AsStringable::class ]; } }
Voici un exemple pratique d'un système de gestion de contenu:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\AsStringable; class Article extends Model { protected function casts(): array { return [ 'title' => AsStringable::class, 'content' => AsStringable::class, 'meta_description' => AsStringable::class ]; } public function getSnippetAttribute() { return $this->content ->stripTags() ->words(30, '...'); } public function getUrlPathAttribute() { return $this->title ->slug() ->prepend('/articles/'); } public function getFormattedContentAttribute() { return $this->content ->markdown() ->replaceMatches('/\@mention\((.*?)\)/', '<a href="https://www.php.cn/link/2fc02e925955d516a04e54a633f05608">@</a>') ->replace('[[', '<mark>') ->replace(']]', '</mark>'); } public function getSeoTitleAttribute() { return $this->title ->title() ->limit(60); } }
$article = Article::find(1); // 直接访问 Stringable 方法 dd($article->title->title()); dd($article->content->words(20)); // 使用计算属性 dd($article->snippet); dd($article->url_path); dd($article->formatted_content);
AsStringable
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!