Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.
Common duplication problems, and corresponding solutions are:
Complex classes like UserInteraction often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes. You can also have a look at the cohesion graph to spot any un-connected, or weakly-connected components.
Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.
While breaking up the class, it is a good idea to analyze how other classes use UserInteraction, and based on these observations, apply Extract Interface, too.
1 | <?php |
||
17 | View Code Duplication | class UserInteraction extends BaseType implements UserInteractionContract, EventContract, ThingContract |
|
|
|||
18 | { |
||
19 | /** |
||
20 | * The subject matter of the content. |
||
21 | * |
||
22 | * @param \Spatie\SchemaOrg\Contracts\ThingContract|\Spatie\SchemaOrg\Contracts\ThingContract[] $about |
||
23 | * |
||
24 | * @return static |
||
25 | * |
||
26 | * @see http://schema.org/about |
||
27 | */ |
||
28 | public function about($about) |
||
32 | |||
33 | /** |
||
34 | * An actor, e.g. in tv, radio, movie, video games etc., or in an event. |
||
35 | * Actors can be associated with individual items or with a series, episode, |
||
36 | * clip. |
||
37 | * |
||
38 | * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $actor |
||
39 | * |
||
40 | * @return static |
||
41 | * |
||
42 | * @see http://schema.org/actor |
||
43 | */ |
||
44 | public function actor($actor) |
||
48 | |||
49 | /** |
||
50 | * An additional type for the item, typically used for adding more specific |
||
51 | * types from external vocabularies in microdata syntax. This is a |
||
52 | * relationship between something and a class that the thing is in. In RDFa |
||
53 | * syntax, it is better to use the native RDFa syntax - the 'typeof' |
||
54 | * attribute - for multiple types. Schema.org tools may have only weaker |
||
55 | * understanding of extra types, in particular those defined externally. |
||
56 | * |
||
57 | * @param string|string[] $additionalType |
||
58 | * |
||
59 | * @return static |
||
60 | * |
||
61 | * @see http://schema.org/additionalType |
||
62 | */ |
||
63 | public function additionalType($additionalType) |
||
67 | |||
68 | /** |
||
69 | * The overall rating, based on a collection of reviews or ratings, of the |
||
70 | * item. |
||
71 | * |
||
72 | * @param \Spatie\SchemaOrg\Contracts\AggregateRatingContract|\Spatie\SchemaOrg\Contracts\AggregateRatingContract[] $aggregateRating |
||
73 | * |
||
74 | * @return static |
||
75 | * |
||
76 | * @see http://schema.org/aggregateRating |
||
77 | */ |
||
78 | public function aggregateRating($aggregateRating) |
||
82 | |||
83 | /** |
||
84 | * An alias for the item. |
||
85 | * |
||
86 | * @param string|string[] $alternateName |
||
87 | * |
||
88 | * @return static |
||
89 | * |
||
90 | * @see http://schema.org/alternateName |
||
91 | */ |
||
92 | public function alternateName($alternateName) |
||
96 | |||
97 | /** |
||
98 | * A person or organization attending the event. |
||
99 | * |
||
100 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $attendee |
||
101 | * |
||
102 | * @return static |
||
103 | * |
||
104 | * @see http://schema.org/attendee |
||
105 | */ |
||
106 | public function attendee($attendee) |
||
110 | |||
111 | /** |
||
112 | * A person attending the event. |
||
113 | * |
||
114 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $attendees |
||
115 | * |
||
116 | * @return static |
||
117 | * |
||
118 | * @see http://schema.org/attendees |
||
119 | */ |
||
120 | public function attendees($attendees) |
||
124 | |||
125 | /** |
||
126 | * An intended audience, i.e. a group for whom something was created. |
||
127 | * |
||
128 | * @param \Spatie\SchemaOrg\Contracts\AudienceContract|\Spatie\SchemaOrg\Contracts\AudienceContract[] $audience |
||
129 | * |
||
130 | * @return static |
||
131 | * |
||
132 | * @see http://schema.org/audience |
||
133 | */ |
||
134 | public function audience($audience) |
||
138 | |||
139 | /** |
||
140 | * The person or organization who wrote a composition, or who is the |
||
141 | * composer of a work performed at some event. |
||
142 | * |
||
143 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $composer |
||
144 | * |
||
145 | * @return static |
||
146 | * |
||
147 | * @see http://schema.org/composer |
||
148 | */ |
||
149 | public function composer($composer) |
||
153 | |||
154 | /** |
||
155 | * A secondary contributor to the CreativeWork or Event. |
||
156 | * |
||
157 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $contributor |
||
158 | * |
||
159 | * @return static |
||
160 | * |
||
161 | * @see http://schema.org/contributor |
||
162 | */ |
||
163 | public function contributor($contributor) |
||
167 | |||
168 | /** |
||
169 | * A description of the item. |
||
170 | * |
||
171 | * @param string|string[] $description |
||
172 | * |
||
173 | * @return static |
||
174 | * |
||
175 | * @see http://schema.org/description |
||
176 | */ |
||
177 | public function description($description) |
||
181 | |||
182 | /** |
||
183 | * A director of e.g. tv, radio, movie, video gaming etc. content, or of an |
||
184 | * event. Directors can be associated with individual items or with a |
||
185 | * series, episode, clip. |
||
186 | * |
||
187 | * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $director |
||
188 | * |
||
189 | * @return static |
||
190 | * |
||
191 | * @see http://schema.org/director |
||
192 | */ |
||
193 | public function director($director) |
||
197 | |||
198 | /** |
||
199 | * A sub property of description. A short description of the item used to |
||
200 | * disambiguate from other, similar items. Information from other properties |
||
201 | * (in particular, name) may be necessary for the description to be useful |
||
202 | * for disambiguation. |
||
203 | * |
||
204 | * @param string|string[] $disambiguatingDescription |
||
205 | * |
||
206 | * @return static |
||
207 | * |
||
208 | * @see http://schema.org/disambiguatingDescription |
||
209 | */ |
||
210 | public function disambiguatingDescription($disambiguatingDescription) |
||
214 | |||
215 | /** |
||
216 | * The time admission will commence. |
||
217 | * |
||
218 | * @param \DateTimeInterface|\DateTimeInterface[] $doorTime |
||
219 | * |
||
220 | * @return static |
||
221 | * |
||
222 | * @see http://schema.org/doorTime |
||
223 | */ |
||
224 | public function doorTime($doorTime) |
||
228 | |||
229 | /** |
||
230 | * The duration of the item (movie, audio recording, event, etc.) in [ISO |
||
231 | * 8601 date format](http://en.wikipedia.org/wiki/ISO_8601). |
||
232 | * |
||
233 | * @param \Spatie\SchemaOrg\Contracts\DurationContract|\Spatie\SchemaOrg\Contracts\DurationContract[] $duration |
||
234 | * |
||
235 | * @return static |
||
236 | * |
||
237 | * @see http://schema.org/duration |
||
238 | */ |
||
239 | public function duration($duration) |
||
243 | |||
244 | /** |
||
245 | * The end date and time of the item (in [ISO 8601 date |
||
246 | * format](http://en.wikipedia.org/wiki/ISO_8601)). |
||
247 | * |
||
248 | * @param \DateTimeInterface|\DateTimeInterface[] $endDate |
||
249 | * |
||
250 | * @return static |
||
251 | * |
||
252 | * @see http://schema.org/endDate |
||
253 | */ |
||
254 | public function endDate($endDate) |
||
258 | |||
259 | /** |
||
260 | * An eventStatus of an event represents its status; particularly useful |
||
261 | * when an event is cancelled or rescheduled. |
||
262 | * |
||
263 | * @param \Spatie\SchemaOrg\Contracts\EventStatusTypeContract|\Spatie\SchemaOrg\Contracts\EventStatusTypeContract[] $eventStatus |
||
264 | * |
||
265 | * @return static |
||
266 | * |
||
267 | * @see http://schema.org/eventStatus |
||
268 | */ |
||
269 | public function eventStatus($eventStatus) |
||
273 | |||
274 | /** |
||
275 | * A person or organization that supports (sponsors) something through some |
||
276 | * kind of financial contribution. |
||
277 | * |
||
278 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $funder |
||
279 | * |
||
280 | * @return static |
||
281 | * |
||
282 | * @see http://schema.org/funder |
||
283 | */ |
||
284 | public function funder($funder) |
||
288 | |||
289 | /** |
||
290 | * The identifier property represents any kind of identifier for any kind of |
||
291 | * [[Thing]], such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides |
||
292 | * dedicated properties for representing many of these, either as textual |
||
293 | * strings or as URL (URI) links. See [background |
||
294 | * notes](/docs/datamodel.html#identifierBg) for more details. |
||
295 | * |
||
296 | * @param \Spatie\SchemaOrg\Contracts\PropertyValueContract|\Spatie\SchemaOrg\Contracts\PropertyValueContract[]|string|string[] $identifier |
||
297 | * |
||
298 | * @return static |
||
299 | * |
||
300 | * @see http://schema.org/identifier |
||
301 | */ |
||
302 | public function identifier($identifier) |
||
306 | |||
307 | /** |
||
308 | * An image of the item. This can be a [[URL]] or a fully described |
||
309 | * [[ImageObject]]. |
||
310 | * |
||
311 | * @param \Spatie\SchemaOrg\Contracts\ImageObjectContract|\Spatie\SchemaOrg\Contracts\ImageObjectContract[]|string|string[] $image |
||
312 | * |
||
313 | * @return static |
||
314 | * |
||
315 | * @see http://schema.org/image |
||
316 | */ |
||
317 | public function image($image) |
||
321 | |||
322 | /** |
||
323 | * The language of the content or performance or used in an action. Please |
||
324 | * use one of the language codes from the [IETF BCP 47 |
||
325 | * standard](http://tools.ietf.org/html/bcp47). See also |
||
326 | * [[availableLanguage]]. |
||
327 | * |
||
328 | * @param \Spatie\SchemaOrg\Contracts\LanguageContract|\Spatie\SchemaOrg\Contracts\LanguageContract[]|string|string[] $inLanguage |
||
329 | * |
||
330 | * @return static |
||
331 | * |
||
332 | * @see http://schema.org/inLanguage |
||
333 | */ |
||
334 | public function inLanguage($inLanguage) |
||
338 | |||
339 | /** |
||
340 | * A flag to signal that the item, event, or place is accessible for free. |
||
341 | * |
||
342 | * @param bool|bool[] $isAccessibleForFree |
||
343 | * |
||
344 | * @return static |
||
345 | * |
||
346 | * @see http://schema.org/isAccessibleForFree |
||
347 | */ |
||
348 | public function isAccessibleForFree($isAccessibleForFree) |
||
352 | |||
353 | /** |
||
354 | * The location of for example where the event is happening, an organization |
||
355 | * is located, or where an action takes place. |
||
356 | * |
||
357 | * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[]|\Spatie\SchemaOrg\Contracts\PostalAddressContract|\Spatie\SchemaOrg\Contracts\PostalAddressContract[]|string|string[] $location |
||
358 | * |
||
359 | * @return static |
||
360 | * |
||
361 | * @see http://schema.org/location |
||
362 | */ |
||
363 | public function location($location) |
||
367 | |||
368 | /** |
||
369 | * Indicates a page (or other CreativeWork) for which this thing is the main |
||
370 | * entity being described. See [background |
||
371 | * notes](/docs/datamodel.html#mainEntityBackground) for details. |
||
372 | * |
||
373 | * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $mainEntityOfPage |
||
374 | * |
||
375 | * @return static |
||
376 | * |
||
377 | * @see http://schema.org/mainEntityOfPage |
||
378 | */ |
||
379 | public function mainEntityOfPage($mainEntityOfPage) |
||
383 | |||
384 | /** |
||
385 | * The total number of individuals that may attend an event or venue. |
||
386 | * |
||
387 | * @param int|int[] $maximumAttendeeCapacity |
||
388 | * |
||
389 | * @return static |
||
390 | * |
||
391 | * @see http://schema.org/maximumAttendeeCapacity |
||
392 | */ |
||
393 | public function maximumAttendeeCapacity($maximumAttendeeCapacity) |
||
397 | |||
398 | /** |
||
399 | * The name of the item. |
||
400 | * |
||
401 | * @param string|string[] $name |
||
402 | * |
||
403 | * @return static |
||
404 | * |
||
405 | * @see http://schema.org/name |
||
406 | */ |
||
407 | public function name($name) |
||
411 | |||
412 | /** |
||
413 | * An offer to provide this item—for example, an offer to sell a |
||
414 | * product, rent the DVD of a movie, perform a service, or give away tickets |
||
415 | * to an event. Use [[businessFunction]] to indicate the kind of transaction |
||
416 | * offered, i.e. sell, lease, etc. This property can also be used to |
||
417 | * describe a [[Demand]]. While this property is listed as expected on a |
||
418 | * number of common types, it can be used in others. In that case, using a |
||
419 | * second type, such as Product or a subtype of Product, can clarify the |
||
420 | * nature of the offer. |
||
421 | * |
||
422 | * @param \Spatie\SchemaOrg\Contracts\DemandContract|\Spatie\SchemaOrg\Contracts\DemandContract[]|\Spatie\SchemaOrg\Contracts\OfferContract|\Spatie\SchemaOrg\Contracts\OfferContract[] $offers |
||
423 | * |
||
424 | * @return static |
||
425 | * |
||
426 | * @see http://schema.org/offers |
||
427 | */ |
||
428 | public function offers($offers) |
||
432 | |||
433 | /** |
||
434 | * An organizer of an Event. |
||
435 | * |
||
436 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $organizer |
||
437 | * |
||
438 | * @return static |
||
439 | * |
||
440 | * @see http://schema.org/organizer |
||
441 | */ |
||
442 | public function organizer($organizer) |
||
446 | |||
447 | /** |
||
448 | * A performer at the event—for example, a presenter, musician, |
||
449 | * musical group or actor. |
||
450 | * |
||
451 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $performer |
||
452 | * |
||
453 | * @return static |
||
454 | * |
||
455 | * @see http://schema.org/performer |
||
456 | */ |
||
457 | public function performer($performer) |
||
461 | |||
462 | /** |
||
463 | * The main performer or performers of the event—for example, a |
||
464 | * presenter, musician, or actor. |
||
465 | * |
||
466 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $performers |
||
467 | * |
||
468 | * @return static |
||
469 | * |
||
470 | * @see http://schema.org/performers |
||
471 | */ |
||
472 | public function performers($performers) |
||
476 | |||
477 | /** |
||
478 | * Indicates a potential Action, which describes an idealized action in |
||
479 | * which this thing would play an 'object' role. |
||
480 | * |
||
481 | * @param \Spatie\SchemaOrg\Contracts\ActionContract|\Spatie\SchemaOrg\Contracts\ActionContract[] $potentialAction |
||
482 | * |
||
483 | * @return static |
||
484 | * |
||
485 | * @see http://schema.org/potentialAction |
||
486 | */ |
||
487 | public function potentialAction($potentialAction) |
||
491 | |||
492 | /** |
||
493 | * Used in conjunction with eventStatus for rescheduled or cancelled events. |
||
494 | * This property contains the previously scheduled start date. For |
||
495 | * rescheduled events, the startDate property should be used for the newly |
||
496 | * scheduled start date. In the (rare) case of an event that has been |
||
497 | * postponed and rescheduled multiple times, this field may be repeated. |
||
498 | * |
||
499 | * @param \DateTimeInterface|\DateTimeInterface[] $previousStartDate |
||
500 | * |
||
501 | * @return static |
||
502 | * |
||
503 | * @see http://schema.org/previousStartDate |
||
504 | */ |
||
505 | public function previousStartDate($previousStartDate) |
||
509 | |||
510 | /** |
||
511 | * The CreativeWork that captured all or part of this Event. |
||
512 | * |
||
513 | * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[] $recordedIn |
||
514 | * |
||
515 | * @return static |
||
516 | * |
||
517 | * @see http://schema.org/recordedIn |
||
518 | */ |
||
519 | public function recordedIn($recordedIn) |
||
523 | |||
524 | /** |
||
525 | * The number of attendee places for an event that remain unallocated. |
||
526 | * |
||
527 | * @param int|int[] $remainingAttendeeCapacity |
||
528 | * |
||
529 | * @return static |
||
530 | * |
||
531 | * @see http://schema.org/remainingAttendeeCapacity |
||
532 | */ |
||
533 | public function remainingAttendeeCapacity($remainingAttendeeCapacity) |
||
537 | |||
538 | /** |
||
539 | * A review of the item. |
||
540 | * |
||
541 | * @param \Spatie\SchemaOrg\Contracts\ReviewContract|\Spatie\SchemaOrg\Contracts\ReviewContract[] $review |
||
542 | * |
||
543 | * @return static |
||
544 | * |
||
545 | * @see http://schema.org/review |
||
546 | */ |
||
547 | public function review($review) |
||
551 | |||
552 | /** |
||
553 | * URL of a reference Web page that unambiguously indicates the item's |
||
554 | * identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or |
||
555 | * official website. |
||
556 | * |
||
557 | * @param string|string[] $sameAs |
||
558 | * |
||
559 | * @return static |
||
560 | * |
||
561 | * @see http://schema.org/sameAs |
||
562 | */ |
||
563 | public function sameAs($sameAs) |
||
567 | |||
568 | /** |
||
569 | * A person or organization that supports a thing through a pledge, promise, |
||
570 | * or financial contribution. e.g. a sponsor of a Medical Study or a |
||
571 | * corporate sponsor of an event. |
||
572 | * |
||
573 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $sponsor |
||
574 | * |
||
575 | * @return static |
||
576 | * |
||
577 | * @see http://schema.org/sponsor |
||
578 | */ |
||
579 | public function sponsor($sponsor) |
||
583 | |||
584 | /** |
||
585 | * The start date and time of the item (in [ISO 8601 date |
||
586 | * format](http://en.wikipedia.org/wiki/ISO_8601)). |
||
587 | * |
||
588 | * @param \DateTimeInterface|\DateTimeInterface[] $startDate |
||
589 | * |
||
590 | * @return static |
||
591 | * |
||
592 | * @see http://schema.org/startDate |
||
593 | */ |
||
594 | public function startDate($startDate) |
||
598 | |||
599 | /** |
||
600 | * An Event that is part of this event. For example, a conference event |
||
601 | * includes many presentations, each of which is a subEvent of the |
||
602 | * conference. |
||
603 | * |
||
604 | * @param \Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $subEvent |
||
605 | * |
||
606 | * @return static |
||
607 | * |
||
608 | * @see http://schema.org/subEvent |
||
609 | */ |
||
610 | public function subEvent($subEvent) |
||
614 | |||
615 | /** |
||
616 | * Events that are a part of this event. For example, a conference event |
||
617 | * includes many presentations, each subEvents of the conference. |
||
618 | * |
||
619 | * @param \Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $subEvents |
||
620 | * |
||
621 | * @return static |
||
622 | * |
||
623 | * @see http://schema.org/subEvents |
||
624 | */ |
||
625 | public function subEvents($subEvents) |
||
629 | |||
630 | /** |
||
631 | * A CreativeWork or Event about this Thing. |
||
632 | * |
||
633 | * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|\Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $subjectOf |
||
634 | * |
||
635 | * @return static |
||
636 | * |
||
637 | * @see http://schema.org/subjectOf |
||
638 | */ |
||
639 | public function subjectOf($subjectOf) |
||
643 | |||
644 | /** |
||
645 | * An event that this event is a part of. For example, a collection of |
||
646 | * individual music performances might each have a music festival as their |
||
647 | * superEvent. |
||
648 | * |
||
649 | * @param \Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $superEvent |
||
650 | * |
||
651 | * @return static |
||
652 | * |
||
653 | * @see http://schema.org/superEvent |
||
654 | */ |
||
655 | public function superEvent($superEvent) |
||
659 | |||
660 | /** |
||
661 | * Organization or person who adapts a creative work to different languages, |
||
662 | * regional differences and technical requirements of a target market, or |
||
663 | * that translates during some event. |
||
664 | * |
||
665 | * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $translator |
||
666 | * |
||
667 | * @return static |
||
668 | * |
||
669 | * @see http://schema.org/translator |
||
670 | */ |
||
671 | public function translator($translator) |
||
675 | |||
676 | /** |
||
677 | * The typical expected age range, e.g. '7-9', '11-'. |
||
678 | * |
||
679 | * @param string|string[] $typicalAgeRange |
||
680 | * |
||
681 | * @return static |
||
682 | * |
||
683 | * @see http://schema.org/typicalAgeRange |
||
684 | */ |
||
685 | public function typicalAgeRange($typicalAgeRange) |
||
689 | |||
690 | /** |
||
691 | * URL of the item. |
||
692 | * |
||
693 | * @param string|string[] $url |
||
694 | * |
||
695 | * @return static |
||
696 | * |
||
697 | * @see http://schema.org/url |
||
698 | */ |
||
699 | public function url($url) |
||
703 | |||
704 | /** |
||
705 | * A work featured in some event, e.g. exhibited in an ExhibitionEvent. |
||
706 | * Specific subproperties are available for workPerformed (e.g. a |
||
707 | * play), or a workPresented (a Movie at a ScreeningEvent). |
||
708 | * |
||
709 | * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[] $workFeatured |
||
710 | * |
||
711 | * @return static |
||
712 | * |
||
713 | * @see http://schema.org/workFeatured |
||
714 | */ |
||
715 | public function workFeatured($workFeatured) |
||
719 | |||
720 | /** |
||
721 | * A work performed in some event, for example a play performed in a |
||
722 | * TheaterEvent. |
||
723 | * |
||
724 | * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[] $workPerformed |
||
725 | * |
||
726 | * @return static |
||
727 | * |
||
728 | * @see http://schema.org/workPerformed |
||
729 | */ |
||
730 | public function workPerformed($workPerformed) |
||
734 | |||
735 | } |
||
736 |
Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.
You can also find more detailed suggestions in the “Code” section of your repository.