File tree Expand file tree Collapse file tree 11 files changed +104
-0
lines changed
Expand file tree Collapse file tree 11 files changed +104
-0
lines changed Original file line number Diff line number Diff line change 55use Elegantly \Seo \Contracts \Taggable ;
66use Elegantly \Seo \SeoTags ;
77use Elegantly \Seo \Tags \Meta ;
8+ use Elegantly \Seo \Traits \DeepClone ;
89
910class Locale implements Taggable
1011{
12+ use DeepClone;
13+
1114 /**
1215 * @param string[] $alternate
1316 */
Original file line number Diff line number Diff line change 77use Elegantly \Seo \OpenGraph \Verticals \Website ;
88use Elegantly \Seo \SeoTags ;
99use Elegantly \Seo \Tags \Meta ;
10+ use Elegantly \Seo \Traits \DeepClone ;
1011use Illuminate \Support \Facades \App ;
1112use Illuminate \Support \Facades \Request ;
1213
1314class OpenGraph implements Taggable
1415{
16+ use DeepClone;
17+
1518 public function __construct (
1619 public string $ title ,
1720 public string $ url ,
Original file line number Diff line number Diff line change 77use Elegantly \Seo \Contracts \Taggable ;
88use Elegantly \Seo \SeoTags ;
99use Elegantly \Seo \Tags \Meta ;
10+ use Elegantly \Seo \Traits \DeepClone ;
1011use Illuminate \Support \Arr ;
1112
1213abstract class Vertical implements Taggable
1314{
15+ use DeepClone;
16+
1417 abstract public function getType (): string ;
1518
1619 public function getNamespace (): string
Original file line number Diff line number Diff line change 55use Elegantly \Seo \Contracts \Taggable ;
66use Elegantly \Seo \SeoTags ;
77use Elegantly \Seo \Tags \Script ;
8+ use Elegantly \Seo \Traits \DeepClone ;
89use Illuminate \Support \Collection ;
910
1011/**
1112 * @extends Collection<int|string, mixed>
1213 */
1314class Schema extends Collection implements Taggable
1415{
16+ use DeepClone;
17+
1518 public function toTags (): SeoTags
1619 {
1720 return new SeoTags ([
Original file line number Diff line number Diff line change 1010use Elegantly \Seo \Schemas \WebPage ;
1111use Elegantly \Seo \Standard \Alternate ;
1212use Elegantly \Seo \Standard \Standard ;
13+ use Elegantly \Seo \Traits \DeepClone ;
1314use Elegantly \Seo \Twitter \Cards \Card ;
1415use Elegantly \Seo \Twitter \Cards \Summary ;
1516use Illuminate \Contracts \Support \Htmlable ;
2021class SeoManager implements Htmlable, Stringable, Taggable
2122{
2223 use Conditionable;
24+ use DeepClone;
2325
2426 /**
2527 * @param null|Schema[] $schemas
Original file line number Diff line number Diff line change 33namespace Elegantly \Seo ;
44
55use Elegantly \Seo \Tags \TagVoid ;
6+ use Elegantly \Seo \Traits \DeepClone ;
67use Illuminate \Contracts \Support \Htmlable ;
78use Illuminate \Support \Collection ;
89
1112 */
1213class SeoTags extends Collection implements Htmlable
1314{
15+ use DeepClone;
16+
1417 public function toHtml (): string
1518 {
1619 return $ this ->map (fn (TagVoid $ tag ) => $ tag ->toHtml ())->join ("\n" );
Original file line number Diff line number Diff line change 77use Elegantly \Seo \Tags \Link ;
88use Elegantly \Seo \Tags \Meta ;
99use Elegantly \Seo \Tags \Title ;
10+ use Elegantly \Seo \Traits \DeepClone ;
1011use Illuminate \Support \Facades \Request ;
1112
1213/**
1314 * @see https://developer.mozilla.org/fr/docs/Web/HTML/Element/meta/name
1415 */
1516class Standard implements Taggable
1617{
18+ use DeepClone;
19+
1720 /**
1821 * @param null|string|string[] $keywords
1922 * @param null|Alternate[] $alternates
Original file line number Diff line number Diff line change 22
33namespace Elegantly \Seo \Tags ;
44
5+ use Elegantly \Seo \Traits \DeepClone ;
56use Illuminate \Contracts \Support \Htmlable ;
67use Illuminate \Support \Collection ;
78
89abstract class TagVoid implements Htmlable
910{
11+ use DeepClone;
12+
1013 public string $ tag ;
1114
1215 /**
Original file line number Diff line number Diff line change 1+ <?php
2+
3+ namespace Elegantly \Seo \Traits ;
4+
5+ trait DeepClone
6+ {
7+ public function __clone ()
8+ {
9+ foreach (get_object_vars ($ this ) as $ property => $ value ) {
10+ if (is_object ($ value )) {
11+ $ this ->{$ property } = clone $ value ;
12+ }
13+
14+ if (is_array ($ value )) {
15+ $ this ->{$ property } = array_map (function ($ item ) {
16+ if (is_object ($ item )) {
17+ return clone $ item ;
18+ }
19+
20+ return $ item ;
21+ }, $ value );
22+ }
23+ }
24+ }
25+ }
Original file line number Diff line number Diff line change 55use Elegantly \Seo \Contracts \Taggable ;
66use Elegantly \Seo \SeoTags ;
77use Elegantly \Seo \Tags \Meta ;
8+ use Elegantly \Seo \Traits \DeepClone ;
89use Elegantly \Seo \Twitter \Image ;
910
1011abstract class Card implements Taggable
1112{
13+ use DeepClone;
14+
1215 public function toTags (): SeoTags
1316 {
1417 $ tags = new SeoTags ;
You can’t perform that action at this time.
0 commit comments