Physician   F
last analyzed

Complexity

Total Complexity 62

Size/Duplication

Total Lines 925
Duplicated Lines 100 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 62
lcom 1
cbo 1
dl 925
loc 925
rs 3.115
c 0
b 0
f 0

62 Methods

Rating   Name   Duplication   Size   Complexity  
A additionalType() 4 4 1
A address() 4 4 1
A aggregateRating() 4 4 1
A alternateName() 4 4 1
A areaServed() 4 4 1
A award() 4 4 1
A awards() 4 4 1
A brand() 4 4 1
A contactPoint() 4 4 1
A contactPoints() 4 4 1
A department() 4 4 1
A description() 4 4 1
A disambiguatingDescription() 4 4 1
A dissolutionDate() 4 4 1
A duns() 4 4 1
A email() 4 4 1
A employee() 4 4 1
A employees() 4 4 1
A event() 4 4 1
A events() 4 4 1
A faxNumber() 4 4 1
A founder() 4 4 1
A founders() 4 4 1
A foundingDate() 4 4 1
A foundingLocation() 4 4 1
A funder() 4 4 1
A globalLocationNumber() 4 4 1
A hasOfferCatalog() 4 4 1
A hasPOS() 4 4 1
A identifier() 4 4 1
A image() 4 4 1
A isicV4() 4 4 1
A legalName() 4 4 1
A leiCode() 4 4 1
A location() 4 4 1
A logo() 4 4 1
A mainEntityOfPage() 4 4 1
A makesOffer() 4 4 1
A member() 4 4 1
A memberOf() 4 4 1
A members() 4 4 1
A naics() 4 4 1
A name() 4 4 1
A numberOfEmployees() 4 4 1
A offeredBy() 4 4 1
A owns() 4 4 1
A parentOrganization() 4 4 1
A potentialAction() 4 4 1
A publishingPrinciples() 4 4 1
A review() 4 4 1
A reviews() 4 4 1
A sameAs() 4 4 1
A seeks() 4 4 1
A serviceArea() 4 4 1
A slogan() 4 4 1
A sponsor() 4 4 1
A subOrganization() 4 4 1
A subjectOf() 4 4 1
A taxID() 4 4 1
A telephone() 4 4 1
A url() 4 4 1
A vatID() 4 4 1

How to fix   Duplicated Code    Complexity   

Duplicated Code

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 Class

 Tip:   Before tackling complexity, make sure that you eliminate any duplication first. This often can reduce the size of classes significantly.

Complex classes like Physician 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 Physician, and based on these observations, apply Extract Interface, too.

1
<?php
2
3
namespace Spatie\SchemaOrg;
4
5
use \Spatie\SchemaOrg\Contracts\PhysicianContract;
6
use \Spatie\SchemaOrg\Contracts\MedicalOrganizationContract;
7
use \Spatie\SchemaOrg\Contracts\OrganizationContract;
8
use \Spatie\SchemaOrg\Contracts\ThingContract;
9
10
/**
11
 * A doctor's office.
12
 *
13
 * @see http://schema.org/Physician
14
 *
15
 */
16 View Code Duplication
class Physician extends BaseType implements PhysicianContract, MedicalOrganizationContract, OrganizationContract, ThingContract
0 ignored issues
show
Duplication introduced by
This class seems to be duplicated in your project.

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.

Loading history...
17
{
18
    /**
19
     * An additional type for the item, typically used for adding more specific
20
     * types from external vocabularies in microdata syntax. This is a
21
     * relationship between something and a class that the thing is in. In RDFa
22
     * syntax, it is better to use the native RDFa syntax - the 'typeof'
23
     * attribute - for multiple types. Schema.org tools may have only weaker
24
     * understanding of extra types, in particular those defined externally.
25
     *
26
     * @param string|string[] $additionalType
27
     *
28
     * @return static
29
     *
30
     * @see http://schema.org/additionalType
31
     */
32
    public function additionalType($additionalType)
33
    {
34
        return $this->setProperty('additionalType', $additionalType);
35
    }
36
37
    /**
38
     * Physical address of the item.
39
     *
40
     * @param \Spatie\SchemaOrg\Contracts\PostalAddressContract|\Spatie\SchemaOrg\Contracts\PostalAddressContract[]|string|string[] $address
41
     *
42
     * @return static
43
     *
44
     * @see http://schema.org/address
45
     */
46
    public function address($address)
47
    {
48
        return $this->setProperty('address', $address);
49
    }
50
51
    /**
52
     * The overall rating, based on a collection of reviews or ratings, of the
53
     * item.
54
     *
55
     * @param \Spatie\SchemaOrg\Contracts\AggregateRatingContract|\Spatie\SchemaOrg\Contracts\AggregateRatingContract[] $aggregateRating
56
     *
57
     * @return static
58
     *
59
     * @see http://schema.org/aggregateRating
60
     */
61
    public function aggregateRating($aggregateRating)
62
    {
63
        return $this->setProperty('aggregateRating', $aggregateRating);
64
    }
65
66
    /**
67
     * An alias for the item.
68
     *
69
     * @param string|string[] $alternateName
70
     *
71
     * @return static
72
     *
73
     * @see http://schema.org/alternateName
74
     */
75
    public function alternateName($alternateName)
76
    {
77
        return $this->setProperty('alternateName', $alternateName);
78
    }
79
80
    /**
81
     * The geographic area where a service or offered item is provided.
82
     *
83
     * @param \Spatie\SchemaOrg\Contracts\AdministrativeAreaContract|\Spatie\SchemaOrg\Contracts\AdministrativeAreaContract[]|\Spatie\SchemaOrg\Contracts\GeoShapeContract|\Spatie\SchemaOrg\Contracts\GeoShapeContract[]|\Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[]|string|string[] $areaServed
84
     *
85
     * @return static
86
     *
87
     * @see http://schema.org/areaServed
88
     */
89
    public function areaServed($areaServed)
90
    {
91
        return $this->setProperty('areaServed', $areaServed);
92
    }
93
94
    /**
95
     * An award won by or for this item.
96
     *
97
     * @param string|string[] $award
98
     *
99
     * @return static
100
     *
101
     * @see http://schema.org/award
102
     */
103
    public function award($award)
104
    {
105
        return $this->setProperty('award', $award);
106
    }
107
108
    /**
109
     * Awards won by or for this item.
110
     *
111
     * @param string|string[] $awards
112
     *
113
     * @return static
114
     *
115
     * @see http://schema.org/awards
116
     */
117
    public function awards($awards)
118
    {
119
        return $this->setProperty('awards', $awards);
120
    }
121
122
    /**
123
     * The brand(s) associated with a product or service, or the brand(s)
124
     * maintained by an organization or business person.
125
     *
126
     * @param \Spatie\SchemaOrg\Contracts\BrandContract|\Spatie\SchemaOrg\Contracts\BrandContract[]|\Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[] $brand
127
     *
128
     * @return static
129
     *
130
     * @see http://schema.org/brand
131
     */
132
    public function brand($brand)
133
    {
134
        return $this->setProperty('brand', $brand);
135
    }
136
137
    /**
138
     * A contact point for a person or organization.
139
     *
140
     * @param \Spatie\SchemaOrg\Contracts\ContactPointContract|\Spatie\SchemaOrg\Contracts\ContactPointContract[] $contactPoint
141
     *
142
     * @return static
143
     *
144
     * @see http://schema.org/contactPoint
145
     */
146
    public function contactPoint($contactPoint)
147
    {
148
        return $this->setProperty('contactPoint', $contactPoint);
149
    }
150
151
    /**
152
     * A contact point for a person or organization.
153
     *
154
     * @param \Spatie\SchemaOrg\Contracts\ContactPointContract|\Spatie\SchemaOrg\Contracts\ContactPointContract[] $contactPoints
155
     *
156
     * @return static
157
     *
158
     * @see http://schema.org/contactPoints
159
     */
160
    public function contactPoints($contactPoints)
161
    {
162
        return $this->setProperty('contactPoints', $contactPoints);
163
    }
164
165
    /**
166
     * A relationship between an organization and a department of that
167
     * organization, also described as an organization (allowing different urls,
168
     * logos, opening hours). For example: a store with a pharmacy, or a bakery
169
     * with a cafe.
170
     *
171
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[] $department
172
     *
173
     * @return static
174
     *
175
     * @see http://schema.org/department
176
     */
177
    public function department($department)
178
    {
179
        return $this->setProperty('department', $department);
180
    }
181
182
    /**
183
     * A description of the item.
184
     *
185
     * @param string|string[] $description
186
     *
187
     * @return static
188
     *
189
     * @see http://schema.org/description
190
     */
191
    public function description($description)
192
    {
193
        return $this->setProperty('description', $description);
194
    }
195
196
    /**
197
     * A sub property of description. A short description of the item used to
198
     * disambiguate from other, similar items. Information from other properties
199
     * (in particular, name) may be necessary for the description to be useful
200
     * for disambiguation.
201
     *
202
     * @param string|string[] $disambiguatingDescription
203
     *
204
     * @return static
205
     *
206
     * @see http://schema.org/disambiguatingDescription
207
     */
208
    public function disambiguatingDescription($disambiguatingDescription)
209
    {
210
        return $this->setProperty('disambiguatingDescription', $disambiguatingDescription);
211
    }
212
213
    /**
214
     * The date that this organization was dissolved.
215
     *
216
     * @param \DateTimeInterface|\DateTimeInterface[] $dissolutionDate
217
     *
218
     * @return static
219
     *
220
     * @see http://schema.org/dissolutionDate
221
     */
222
    public function dissolutionDate($dissolutionDate)
223
    {
224
        return $this->setProperty('dissolutionDate', $dissolutionDate);
225
    }
226
227
    /**
228
     * The Dun & Bradstreet DUNS number for identifying an organization or
229
     * business person.
230
     *
231
     * @param string|string[] $duns
232
     *
233
     * @return static
234
     *
235
     * @see http://schema.org/duns
236
     */
237
    public function duns($duns)
238
    {
239
        return $this->setProperty('duns', $duns);
240
    }
241
242
    /**
243
     * Email address.
244
     *
245
     * @param string|string[] $email
246
     *
247
     * @return static
248
     *
249
     * @see http://schema.org/email
250
     */
251
    public function email($email)
252
    {
253
        return $this->setProperty('email', $email);
254
    }
255
256
    /**
257
     * Someone working for this organization.
258
     *
259
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $employee
260
     *
261
     * @return static
262
     *
263
     * @see http://schema.org/employee
264
     */
265
    public function employee($employee)
266
    {
267
        return $this->setProperty('employee', $employee);
268
    }
269
270
    /**
271
     * People working for this organization.
272
     *
273
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $employees
274
     *
275
     * @return static
276
     *
277
     * @see http://schema.org/employees
278
     */
279
    public function employees($employees)
280
    {
281
        return $this->setProperty('employees', $employees);
282
    }
283
284
    /**
285
     * Upcoming or past event associated with this place, organization, or
286
     * action.
287
     *
288
     * @param \Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $event
289
     *
290
     * @return static
291
     *
292
     * @see http://schema.org/event
293
     */
294
    public function event($event)
295
    {
296
        return $this->setProperty('event', $event);
297
    }
298
299
    /**
300
     * Upcoming or past events associated with this place or organization.
301
     *
302
     * @param \Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $events
303
     *
304
     * @return static
305
     *
306
     * @see http://schema.org/events
307
     */
308
    public function events($events)
309
    {
310
        return $this->setProperty('events', $events);
311
    }
312
313
    /**
314
     * The fax number.
315
     *
316
     * @param string|string[] $faxNumber
317
     *
318
     * @return static
319
     *
320
     * @see http://schema.org/faxNumber
321
     */
322
    public function faxNumber($faxNumber)
323
    {
324
        return $this->setProperty('faxNumber', $faxNumber);
325
    }
326
327
    /**
328
     * A person who founded this organization.
329
     *
330
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $founder
331
     *
332
     * @return static
333
     *
334
     * @see http://schema.org/founder
335
     */
336
    public function founder($founder)
337
    {
338
        return $this->setProperty('founder', $founder);
339
    }
340
341
    /**
342
     * A person who founded this organization.
343
     *
344
     * @param \Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $founders
345
     *
346
     * @return static
347
     *
348
     * @see http://schema.org/founders
349
     */
350
    public function founders($founders)
351
    {
352
        return $this->setProperty('founders', $founders);
353
    }
354
355
    /**
356
     * The date that this organization was founded.
357
     *
358
     * @param \DateTimeInterface|\DateTimeInterface[] $foundingDate
359
     *
360
     * @return static
361
     *
362
     * @see http://schema.org/foundingDate
363
     */
364
    public function foundingDate($foundingDate)
365
    {
366
        return $this->setProperty('foundingDate', $foundingDate);
367
    }
368
369
    /**
370
     * The place where the Organization was founded.
371
     *
372
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $foundingLocation
373
     *
374
     * @return static
375
     *
376
     * @see http://schema.org/foundingLocation
377
     */
378
    public function foundingLocation($foundingLocation)
379
    {
380
        return $this->setProperty('foundingLocation', $foundingLocation);
381
    }
382
383
    /**
384
     * A person or organization that supports (sponsors) something through some
385
     * kind of financial contribution.
386
     *
387
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $funder
388
     *
389
     * @return static
390
     *
391
     * @see http://schema.org/funder
392
     */
393
    public function funder($funder)
394
    {
395
        return $this->setProperty('funder', $funder);
396
    }
397
398
    /**
399
     * The [Global Location Number](http://www.gs1.org/gln) (GLN, sometimes also
400
     * referred to as International Location Number or ILN) of the respective
401
     * organization, person, or place. The GLN is a 13-digit number used to
402
     * identify parties and physical locations.
403
     *
404
     * @param string|string[] $globalLocationNumber
405
     *
406
     * @return static
407
     *
408
     * @see http://schema.org/globalLocationNumber
409
     */
410
    public function globalLocationNumber($globalLocationNumber)
411
    {
412
        return $this->setProperty('globalLocationNumber', $globalLocationNumber);
413
    }
414
415
    /**
416
     * Indicates an OfferCatalog listing for this Organization, Person, or
417
     * Service.
418
     *
419
     * @param \Spatie\SchemaOrg\Contracts\OfferCatalogContract|\Spatie\SchemaOrg\Contracts\OfferCatalogContract[] $hasOfferCatalog
420
     *
421
     * @return static
422
     *
423
     * @see http://schema.org/hasOfferCatalog
424
     */
425
    public function hasOfferCatalog($hasOfferCatalog)
426
    {
427
        return $this->setProperty('hasOfferCatalog', $hasOfferCatalog);
428
    }
429
430
    /**
431
     * Points-of-Sales operated by the organization or person.
432
     *
433
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $hasPOS
434
     *
435
     * @return static
436
     *
437
     * @see http://schema.org/hasPOS
438
     */
439
    public function hasPOS($hasPOS)
440
    {
441
        return $this->setProperty('hasPOS', $hasPOS);
442
    }
443
444
    /**
445
     * The identifier property represents any kind of identifier for any kind of
446
     * [[Thing]], such as ISBNs, GTIN codes, UUIDs etc. Schema.org provides
447
     * dedicated properties for representing many of these, either as textual
448
     * strings or as URL (URI) links. See [background
449
     * notes](/docs/datamodel.html#identifierBg) for more details.
450
     *
451
     * @param \Spatie\SchemaOrg\Contracts\PropertyValueContract|\Spatie\SchemaOrg\Contracts\PropertyValueContract[]|string|string[] $identifier
452
     *
453
     * @return static
454
     *
455
     * @see http://schema.org/identifier
456
     */
457
    public function identifier($identifier)
458
    {
459
        return $this->setProperty('identifier', $identifier);
460
    }
461
462
    /**
463
     * An image of the item. This can be a [[URL]] or a fully described
464
     * [[ImageObject]].
465
     *
466
     * @param \Spatie\SchemaOrg\Contracts\ImageObjectContract|\Spatie\SchemaOrg\Contracts\ImageObjectContract[]|string|string[] $image
467
     *
468
     * @return static
469
     *
470
     * @see http://schema.org/image
471
     */
472
    public function image($image)
473
    {
474
        return $this->setProperty('image', $image);
475
    }
476
477
    /**
478
     * The International Standard of Industrial Classification of All Economic
479
     * Activities (ISIC), Revision 4 code for a particular organization,
480
     * business person, or place.
481
     *
482
     * @param string|string[] $isicV4
483
     *
484
     * @return static
485
     *
486
     * @see http://schema.org/isicV4
487
     */
488
    public function isicV4($isicV4)
489
    {
490
        return $this->setProperty('isicV4', $isicV4);
491
    }
492
493
    /**
494
     * The official name of the organization, e.g. the registered company name.
495
     *
496
     * @param string|string[] $legalName
497
     *
498
     * @return static
499
     *
500
     * @see http://schema.org/legalName
501
     */
502
    public function legalName($legalName)
503
    {
504
        return $this->setProperty('legalName', $legalName);
505
    }
506
507
    /**
508
     * An organization identifier that uniquely identifies a legal entity as
509
     * defined in ISO 17442.
510
     *
511
     * @param string|string[] $leiCode
512
     *
513
     * @return static
514
     *
515
     * @see http://schema.org/leiCode
516
     */
517
    public function leiCode($leiCode)
518
    {
519
        return $this->setProperty('leiCode', $leiCode);
520
    }
521
522
    /**
523
     * The location of for example where the event is happening, an organization
524
     * is located, or where an action takes place.
525
     *
526
     * @param \Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[]|\Spatie\SchemaOrg\Contracts\PostalAddressContract|\Spatie\SchemaOrg\Contracts\PostalAddressContract[]|string|string[] $location
527
     *
528
     * @return static
529
     *
530
     * @see http://schema.org/location
531
     */
532
    public function location($location)
533
    {
534
        return $this->setProperty('location', $location);
535
    }
536
537
    /**
538
     * An associated logo.
539
     *
540
     * @param \Spatie\SchemaOrg\Contracts\ImageObjectContract|\Spatie\SchemaOrg\Contracts\ImageObjectContract[]|string|string[] $logo
541
     *
542
     * @return static
543
     *
544
     * @see http://schema.org/logo
545
     */
546
    public function logo($logo)
547
    {
548
        return $this->setProperty('logo', $logo);
549
    }
550
551
    /**
552
     * Indicates a page (or other CreativeWork) for which this thing is the main
553
     * entity being described. See [background
554
     * notes](/docs/datamodel.html#mainEntityBackground) for details.
555
     *
556
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $mainEntityOfPage
557
     *
558
     * @return static
559
     *
560
     * @see http://schema.org/mainEntityOfPage
561
     */
562
    public function mainEntityOfPage($mainEntityOfPage)
563
    {
564
        return $this->setProperty('mainEntityOfPage', $mainEntityOfPage);
565
    }
566
567
    /**
568
     * A pointer to products or services offered by the organization or person.
569
     *
570
     * @param \Spatie\SchemaOrg\Contracts\OfferContract|\Spatie\SchemaOrg\Contracts\OfferContract[] $makesOffer
571
     *
572
     * @return static
573
     *
574
     * @see http://schema.org/makesOffer
575
     */
576
    public function makesOffer($makesOffer)
577
    {
578
        return $this->setProperty('makesOffer', $makesOffer);
579
    }
580
581
    /**
582
     * A member of an Organization or a ProgramMembership. Organizations can be
583
     * members of organizations; ProgramMembership is typically for individuals.
584
     *
585
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $member
586
     *
587
     * @return static
588
     *
589
     * @see http://schema.org/member
590
     */
591
    public function member($member)
592
    {
593
        return $this->setProperty('member', $member);
594
    }
595
596
    /**
597
     * An Organization (or ProgramMembership) to which this Person or
598
     * Organization belongs.
599
     *
600
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\ProgramMembershipContract|\Spatie\SchemaOrg\Contracts\ProgramMembershipContract[] $memberOf
601
     *
602
     * @return static
603
     *
604
     * @see http://schema.org/memberOf
605
     */
606
    public function memberOf($memberOf)
607
    {
608
        return $this->setProperty('memberOf', $memberOf);
609
    }
610
611
    /**
612
     * A member of this organization.
613
     *
614
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $members
615
     *
616
     * @return static
617
     *
618
     * @see http://schema.org/members
619
     */
620
    public function members($members)
621
    {
622
        return $this->setProperty('members', $members);
623
    }
624
625
    /**
626
     * The North American Industry Classification System (NAICS) code for a
627
     * particular organization or business person.
628
     *
629
     * @param string|string[] $naics
630
     *
631
     * @return static
632
     *
633
     * @see http://schema.org/naics
634
     */
635
    public function naics($naics)
636
    {
637
        return $this->setProperty('naics', $naics);
638
    }
639
640
    /**
641
     * The name of the item.
642
     *
643
     * @param string|string[] $name
644
     *
645
     * @return static
646
     *
647
     * @see http://schema.org/name
648
     */
649
    public function name($name)
650
    {
651
        return $this->setProperty('name', $name);
652
    }
653
654
    /**
655
     * The number of employees in an organization e.g. business.
656
     *
657
     * @param \Spatie\SchemaOrg\Contracts\QuantitativeValueContract|\Spatie\SchemaOrg\Contracts\QuantitativeValueContract[] $numberOfEmployees
658
     *
659
     * @return static
660
     *
661
     * @see http://schema.org/numberOfEmployees
662
     */
663
    public function numberOfEmployees($numberOfEmployees)
664
    {
665
        return $this->setProperty('numberOfEmployees', $numberOfEmployees);
666
    }
667
668
    /**
669
     * A pointer to the organization or person making the offer.
670
     *
671
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $offeredBy
672
     *
673
     * @return static
674
     *
675
     * @see http://schema.org/offeredBy
676
     */
677
    public function offeredBy($offeredBy)
678
    {
679
        return $this->setProperty('offeredBy', $offeredBy);
680
    }
681
682
    /**
683
     * Products owned by the organization or person.
684
     *
685
     * @param \Spatie\SchemaOrg\Contracts\OwnershipInfoContract|\Spatie\SchemaOrg\Contracts\OwnershipInfoContract[]|\Spatie\SchemaOrg\Contracts\ProductContract|\Spatie\SchemaOrg\Contracts\ProductContract[] $owns
686
     *
687
     * @return static
688
     *
689
     * @see http://schema.org/owns
690
     */
691
    public function owns($owns)
692
    {
693
        return $this->setProperty('owns', $owns);
694
    }
695
696
    /**
697
     * The larger organization that this organization is a [[subOrganization]]
698
     * of, if any.
699
     *
700
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[] $parentOrganization
701
     *
702
     * @return static
703
     *
704
     * @see http://schema.org/parentOrganization
705
     */
706
    public function parentOrganization($parentOrganization)
707
    {
708
        return $this->setProperty('parentOrganization', $parentOrganization);
709
    }
710
711
    /**
712
     * Indicates a potential Action, which describes an idealized action in
713
     * which this thing would play an 'object' role.
714
     *
715
     * @param \Spatie\SchemaOrg\Contracts\ActionContract|\Spatie\SchemaOrg\Contracts\ActionContract[] $potentialAction
716
     *
717
     * @return static
718
     *
719
     * @see http://schema.org/potentialAction
720
     */
721
    public function potentialAction($potentialAction)
722
    {
723
        return $this->setProperty('potentialAction', $potentialAction);
724
    }
725
726
    /**
727
     * The publishingPrinciples property indicates (typically via [[URL]]) a
728
     * document describing the editorial principles of an [[Organization]] (or
729
     * individual e.g. a [[Person]] writing a blog) that relate to their
730
     * activities as a publisher, e.g. ethics or diversity policies. When
731
     * applied to a [[CreativeWork]] (e.g. [[NewsArticle]]) the principles are
732
     * those of the party primarily responsible for the creation of the
733
     * [[CreativeWork]].
734
     * 
735
     * While such policies are most typically expressed in natural language,
736
     * sometimes related information (e.g. indicating a [[funder]]) can be
737
     * expressed using schema.org terminology.
738
     *
739
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|string|string[] $publishingPrinciples
740
     *
741
     * @return static
742
     *
743
     * @see http://schema.org/publishingPrinciples
744
     */
745
    public function publishingPrinciples($publishingPrinciples)
746
    {
747
        return $this->setProperty('publishingPrinciples', $publishingPrinciples);
748
    }
749
750
    /**
751
     * A review of the item.
752
     *
753
     * @param \Spatie\SchemaOrg\Contracts\ReviewContract|\Spatie\SchemaOrg\Contracts\ReviewContract[] $review
754
     *
755
     * @return static
756
     *
757
     * @see http://schema.org/review
758
     */
759
    public function review($review)
760
    {
761
        return $this->setProperty('review', $review);
762
    }
763
764
    /**
765
     * Review of the item.
766
     *
767
     * @param \Spatie\SchemaOrg\Contracts\ReviewContract|\Spatie\SchemaOrg\Contracts\ReviewContract[] $reviews
768
     *
769
     * @return static
770
     *
771
     * @see http://schema.org/reviews
772
     */
773
    public function reviews($reviews)
774
    {
775
        return $this->setProperty('reviews', $reviews);
776
    }
777
778
    /**
779
     * URL of a reference Web page that unambiguously indicates the item's
780
     * identity. E.g. the URL of the item's Wikipedia page, Wikidata entry, or
781
     * official website.
782
     *
783
     * @param string|string[] $sameAs
784
     *
785
     * @return static
786
     *
787
     * @see http://schema.org/sameAs
788
     */
789
    public function sameAs($sameAs)
790
    {
791
        return $this->setProperty('sameAs', $sameAs);
792
    }
793
794
    /**
795
     * A pointer to products or services sought by the organization or person
796
     * (demand).
797
     *
798
     * @param \Spatie\SchemaOrg\Contracts\DemandContract|\Spatie\SchemaOrg\Contracts\DemandContract[] $seeks
799
     *
800
     * @return static
801
     *
802
     * @see http://schema.org/seeks
803
     */
804
    public function seeks($seeks)
805
    {
806
        return $this->setProperty('seeks', $seeks);
807
    }
808
809
    /**
810
     * The geographic area where the service is provided.
811
     *
812
     * @param \Spatie\SchemaOrg\Contracts\AdministrativeAreaContract|\Spatie\SchemaOrg\Contracts\AdministrativeAreaContract[]|\Spatie\SchemaOrg\Contracts\GeoShapeContract|\Spatie\SchemaOrg\Contracts\GeoShapeContract[]|\Spatie\SchemaOrg\Contracts\PlaceContract|\Spatie\SchemaOrg\Contracts\PlaceContract[] $serviceArea
813
     *
814
     * @return static
815
     *
816
     * @see http://schema.org/serviceArea
817
     */
818
    public function serviceArea($serviceArea)
819
    {
820
        return $this->setProperty('serviceArea', $serviceArea);
821
    }
822
823
    /**
824
     * A slogan or motto associated with the item.
825
     *
826
     * @param string|string[] $slogan
827
     *
828
     * @return static
829
     *
830
     * @see http://schema.org/slogan
831
     */
832
    public function slogan($slogan)
833
    {
834
        return $this->setProperty('slogan', $slogan);
835
    }
836
837
    /**
838
     * A person or organization that supports a thing through a pledge, promise,
839
     * or financial contribution. e.g. a sponsor of a Medical Study or a
840
     * corporate sponsor of an event.
841
     *
842
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[]|\Spatie\SchemaOrg\Contracts\PersonContract|\Spatie\SchemaOrg\Contracts\PersonContract[] $sponsor
843
     *
844
     * @return static
845
     *
846
     * @see http://schema.org/sponsor
847
     */
848
    public function sponsor($sponsor)
849
    {
850
        return $this->setProperty('sponsor', $sponsor);
851
    }
852
853
    /**
854
     * A relationship between two organizations where the first includes the
855
     * second, e.g., as a subsidiary. See also: the more specific 'department'
856
     * property.
857
     *
858
     * @param \Spatie\SchemaOrg\Contracts\OrganizationContract|\Spatie\SchemaOrg\Contracts\OrganizationContract[] $subOrganization
859
     *
860
     * @return static
861
     *
862
     * @see http://schema.org/subOrganization
863
     */
864
    public function subOrganization($subOrganization)
865
    {
866
        return $this->setProperty('subOrganization', $subOrganization);
867
    }
868
869
    /**
870
     * A CreativeWork or Event about this Thing.
871
     *
872
     * @param \Spatie\SchemaOrg\Contracts\CreativeWorkContract|\Spatie\SchemaOrg\Contracts\CreativeWorkContract[]|\Spatie\SchemaOrg\Contracts\EventContract|\Spatie\SchemaOrg\Contracts\EventContract[] $subjectOf
873
     *
874
     * @return static
875
     *
876
     * @see http://schema.org/subjectOf
877
     */
878
    public function subjectOf($subjectOf)
879
    {
880
        return $this->setProperty('subjectOf', $subjectOf);
881
    }
882
883
    /**
884
     * The Tax / Fiscal ID of the organization or person, e.g. the TIN in the US
885
     * or the CIF/NIF in Spain.
886
     *
887
     * @param string|string[] $taxID
888
     *
889
     * @return static
890
     *
891
     * @see http://schema.org/taxID
892
     */
893
    public function taxID($taxID)
894
    {
895
        return $this->setProperty('taxID', $taxID);
896
    }
897
898
    /**
899
     * The telephone number.
900
     *
901
     * @param string|string[] $telephone
902
     *
903
     * @return static
904
     *
905
     * @see http://schema.org/telephone
906
     */
907
    public function telephone($telephone)
908
    {
909
        return $this->setProperty('telephone', $telephone);
910
    }
911
912
    /**
913
     * URL of the item.
914
     *
915
     * @param string|string[] $url
916
     *
917
     * @return static
918
     *
919
     * @see http://schema.org/url
920
     */
921
    public function url($url)
922
    {
923
        return $this->setProperty('url', $url);
924
    }
925
926
    /**
927
     * The Value-added Tax ID of the organization or person.
928
     *
929
     * @param string|string[] $vatID
930
     *
931
     * @return static
932
     *
933
     * @see http://schema.org/vatID
934
     */
935
    public function vatID($vatID)
936
    {
937
        return $this->setProperty('vatID', $vatID);
938
    }
939
940
}
941