Graph::show()   B
last analyzed

Complexity

Conditions 8
Paths 8

Size

Total Lines 48

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 48
rs 7.8901
c 0
b 0
f 0
cc 8
nc 8
nop 2
1
<?php
2
3
namespace Spatie\SchemaOrg;
4
5
use ArrayAccess;
6
use BadMethodCallException;
7
use Closure;
8
use JsonSerializable;
9
use ReflectionClass;
10
use ReflectionNamedType;
11
use Spatie\SchemaOrg\Exceptions\InvalidType;
12
use Spatie\SchemaOrg\Exceptions\TypeAlreadyInGraph;
13
use Spatie\SchemaOrg\Exceptions\TypeNotInGraph;
14
15
/**
16
 * @method self|AMRadioChannel aMRadioChannel(string|Closure|null $identifier = null, Closure|null $callback = null)
17
 * @method self|APIReference aPIReference(string|Closure|null $identifier = null, Closure|null $callback = null)
18
 * @method self|AboutPage aboutPage(string|Closure|null $identifier = null, Closure|null $callback = null)
19
 * @method self|AcceptAction acceptAction(string|Closure|null $identifier = null, Closure|null $callback = null)
20
 * @method self|Accommodation accommodation(string|Closure|null $identifier = null, Closure|null $callback = null)
21
 * @method self|AccountingService accountingService(string|Closure|null $identifier = null, Closure|null $callback = null)
22
 * @method self|AchieveAction achieveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
23
 * @method self|Action action(string|Closure|null $identifier = null, Closure|null $callback = null)
24
 * @method self|ActionAccessSpecification actionAccessSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
25
 * @method self|ActionStatusType actionStatusType(string|Closure|null $identifier = null, Closure|null $callback = null)
26
 * @method self|ActivateAction activateAction(string|Closure|null $identifier = null, Closure|null $callback = null)
27
 * @method self|AddAction addAction(string|Closure|null $identifier = null, Closure|null $callback = null)
28
 * @method self|AdministrativeArea administrativeArea(string|Closure|null $identifier = null, Closure|null $callback = null)
29
 * @method self|AdultEntertainment adultEntertainment(string|Closure|null $identifier = null, Closure|null $callback = null)
30
 * @method self|AggregateOffer aggregateOffer(string|Closure|null $identifier = null, Closure|null $callback = null)
31
 * @method self|AggregateRating aggregateRating(string|Closure|null $identifier = null, Closure|null $callback = null)
32
 * @method self|AgreeAction agreeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
33
 * @method self|Airline airline(string|Closure|null $identifier = null, Closure|null $callback = null)
34
 * @method self|Airport airport(string|Closure|null $identifier = null, Closure|null $callback = null)
35
 * @method self|AlignmentObject alignmentObject(string|Closure|null $identifier = null, Closure|null $callback = null)
36
 * @method self|AllocateAction allocateAction(string|Closure|null $identifier = null, Closure|null $callback = null)
37
 * @method self|AmusementPark amusementPark(string|Closure|null $identifier = null, Closure|null $callback = null)
38
 * @method self|AnimalShelter animalShelter(string|Closure|null $identifier = null, Closure|null $callback = null)
39
 * @method self|Answer answer(string|Closure|null $identifier = null, Closure|null $callback = null)
40
 * @method self|Apartment apartment(string|Closure|null $identifier = null, Closure|null $callback = null)
41
 * @method self|ApartmentComplex apartmentComplex(string|Closure|null $identifier = null, Closure|null $callback = null)
42
 * @method self|AppendAction appendAction(string|Closure|null $identifier = null, Closure|null $callback = null)
43
 * @method self|ApplyAction applyAction(string|Closure|null $identifier = null, Closure|null $callback = null)
44
 * @method self|Aquarium aquarium(string|Closure|null $identifier = null, Closure|null $callback = null)
45
 * @method self|ArriveAction arriveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
46
 * @method self|ArtGallery artGallery(string|Closure|null $identifier = null, Closure|null $callback = null)
47
 * @method self|Article article(string|Closure|null $identifier = null, Closure|null $callback = null)
48
 * @method self|AskAction askAction(string|Closure|null $identifier = null, Closure|null $callback = null)
49
 * @method self|AssessAction assessAction(string|Closure|null $identifier = null, Closure|null $callback = null)
50
 * @method self|AssignAction assignAction(string|Closure|null $identifier = null, Closure|null $callback = null)
51
 * @method self|Attorney attorney(string|Closure|null $identifier = null, Closure|null $callback = null)
52
 * @method self|Audience audience(string|Closure|null $identifier = null, Closure|null $callback = null)
53
 * @method self|AudioObject audioObject(string|Closure|null $identifier = null, Closure|null $callback = null)
54
 * @method self|AuthorizeAction authorizeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
55
 * @method self|AutoBodyShop autoBodyShop(string|Closure|null $identifier = null, Closure|null $callback = null)
56
 * @method self|AutoDealer autoDealer(string|Closure|null $identifier = null, Closure|null $callback = null)
57
 * @method self|AutoPartsStore autoPartsStore(string|Closure|null $identifier = null, Closure|null $callback = null)
58
 * @method self|AutoRental autoRental(string|Closure|null $identifier = null, Closure|null $callback = null)
59
 * @method self|AutoRepair autoRepair(string|Closure|null $identifier = null, Closure|null $callback = null)
60
 * @method self|AutoWash autoWash(string|Closure|null $identifier = null, Closure|null $callback = null)
61
 * @method self|AutomatedTeller automatedTeller(string|Closure|null $identifier = null, Closure|null $callback = null)
62
 * @method self|AutomotiveBusiness automotiveBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
63
 * @method self|Bakery bakery(string|Closure|null $identifier = null, Closure|null $callback = null)
64
 * @method self|BankAccount bankAccount(string|Closure|null $identifier = null, Closure|null $callback = null)
65
 * @method self|BankOrCreditUnion bankOrCreditUnion(string|Closure|null $identifier = null, Closure|null $callback = null)
66
 * @method self|BarOrPub barOrPub(string|Closure|null $identifier = null, Closure|null $callback = null)
67
 * @method self|Barcode barcode(string|Closure|null $identifier = null, Closure|null $callback = null)
68
 * @method self|Beach beach(string|Closure|null $identifier = null, Closure|null $callback = null)
69
 * @method self|BeautySalon beautySalon(string|Closure|null $identifier = null, Closure|null $callback = null)
70
 * @method self|BedAndBreakfast bedAndBreakfast(string|Closure|null $identifier = null, Closure|null $callback = null)
71
 * @method self|BedDetails bedDetails(string|Closure|null $identifier = null, Closure|null $callback = null)
72
 * @method self|BedType bedType(string|Closure|null $identifier = null, Closure|null $callback = null)
73
 * @method self|BefriendAction befriendAction(string|Closure|null $identifier = null, Closure|null $callback = null)
74
 * @method self|BikeStore bikeStore(string|Closure|null $identifier = null, Closure|null $callback = null)
75
 * @method self|Blog blog(string|Closure|null $identifier = null, Closure|null $callback = null)
76
 * @method self|BlogPosting blogPosting(string|Closure|null $identifier = null, Closure|null $callback = null)
77
 * @method self|BoardingPolicyType boardingPolicyType(string|Closure|null $identifier = null, Closure|null $callback = null)
78
 * @method self|BodyOfWater bodyOfWater(string|Closure|null $identifier = null, Closure|null $callback = null)
79
 * @method self|Book book(string|Closure|null $identifier = null, Closure|null $callback = null)
80
 * @method self|BookFormatType bookFormatType(string|Closure|null $identifier = null, Closure|null $callback = null)
81
 * @method self|BookSeries bookSeries(string|Closure|null $identifier = null, Closure|null $callback = null)
82
 * @method self|BookStore bookStore(string|Closure|null $identifier = null, Closure|null $callback = null)
83
 * @method self|BookmarkAction bookmarkAction(string|Closure|null $identifier = null, Closure|null $callback = null)
84
 * @method self|BorrowAction borrowAction(string|Closure|null $identifier = null, Closure|null $callback = null)
85
 * @method self|BowlingAlley bowlingAlley(string|Closure|null $identifier = null, Closure|null $callback = null)
86
 * @method self|Brand brand(string|Closure|null $identifier = null, Closure|null $callback = null)
87
 * @method self|BreadcrumbList breadcrumbList(string|Closure|null $identifier = null, Closure|null $callback = null)
88
 * @method self|Brewery brewery(string|Closure|null $identifier = null, Closure|null $callback = null)
89
 * @method self|Bridge bridge(string|Closure|null $identifier = null, Closure|null $callback = null)
90
 * @method self|BroadcastChannel broadcastChannel(string|Closure|null $identifier = null, Closure|null $callback = null)
91
 * @method self|BroadcastEvent broadcastEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
92
 * @method self|BroadcastFrequencySpecification broadcastFrequencySpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
93
 * @method self|BroadcastService broadcastService(string|Closure|null $identifier = null, Closure|null $callback = null)
94
 * @method self|BuddhistTemple buddhistTemple(string|Closure|null $identifier = null, Closure|null $callback = null)
95
 * @method self|BusReservation busReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
96
 * @method self|BusStation busStation(string|Closure|null $identifier = null, Closure|null $callback = null)
97
 * @method self|BusStop busStop(string|Closure|null $identifier = null, Closure|null $callback = null)
98
 * @method self|BusTrip busTrip(string|Closure|null $identifier = null, Closure|null $callback = null)
99
 * @method self|BusinessAudience businessAudience(string|Closure|null $identifier = null, Closure|null $callback = null)
100
 * @method self|BusinessEntityType businessEntityType(string|Closure|null $identifier = null, Closure|null $callback = null)
101
 * @method self|BusinessEvent businessEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
102
 * @method self|BusinessFunction businessFunction(string|Closure|null $identifier = null, Closure|null $callback = null)
103
 * @method self|BuyAction buyAction(string|Closure|null $identifier = null, Closure|null $callback = null)
104
 * @method self|CableOrSatelliteService cableOrSatelliteService(string|Closure|null $identifier = null, Closure|null $callback = null)
105
 * @method self|CafeOrCoffeeShop cafeOrCoffeeShop(string|Closure|null $identifier = null, Closure|null $callback = null)
106
 * @method self|Campground campground(string|Closure|null $identifier = null, Closure|null $callback = null)
107
 * @method self|CampingPitch campingPitch(string|Closure|null $identifier = null, Closure|null $callback = null)
108
 * @method self|Canal canal(string|Closure|null $identifier = null, Closure|null $callback = null)
109
 * @method self|CancelAction cancelAction(string|Closure|null $identifier = null, Closure|null $callback = null)
110
 * @method self|Car car(string|Closure|null $identifier = null, Closure|null $callback = null)
111
 * @method self|Casino casino(string|Closure|null $identifier = null, Closure|null $callback = null)
112
 * @method self|CatholicChurch catholicChurch(string|Closure|null $identifier = null, Closure|null $callback = null)
113
 * @method self|Cemetery cemetery(string|Closure|null $identifier = null, Closure|null $callback = null)
114
 * @method self|CheckAction checkAction(string|Closure|null $identifier = null, Closure|null $callback = null)
115
 * @method self|CheckInAction checkInAction(string|Closure|null $identifier = null, Closure|null $callback = null)
116
 * @method self|CheckOutAction checkOutAction(string|Closure|null $identifier = null, Closure|null $callback = null)
117
 * @method self|CheckoutPage checkoutPage(string|Closure|null $identifier = null, Closure|null $callback = null)
118
 * @method self|ChildCare childCare(string|Closure|null $identifier = null, Closure|null $callback = null)
119
 * @method self|ChildrensEvent childrensEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
120
 * @method self|ChooseAction chooseAction(string|Closure|null $identifier = null, Closure|null $callback = null)
121
 * @method self|Church church(string|Closure|null $identifier = null, Closure|null $callback = null)
122
 * @method self|City city(string|Closure|null $identifier = null, Closure|null $callback = null)
123
 * @method self|CityHall cityHall(string|Closure|null $identifier = null, Closure|null $callback = null)
124
 * @method self|CivicStructure civicStructure(string|Closure|null $identifier = null, Closure|null $callback = null)
125
 * @method self|ClaimReview claimReview(string|Closure|null $identifier = null, Closure|null $callback = null)
126
 * @method self|Clip clip(string|Closure|null $identifier = null, Closure|null $callback = null)
127
 * @method self|ClothingStore clothingStore(string|Closure|null $identifier = null, Closure|null $callback = null)
128
 * @method self|Code code(string|Closure|null $identifier = null, Closure|null $callback = null)
129
 * @method self|CollectionPage collectionPage(string|Closure|null $identifier = null, Closure|null $callback = null)
130
 * @method self|CollegeOrUniversity collegeOrUniversity(string|Closure|null $identifier = null, Closure|null $callback = null)
131
 * @method self|ComedyClub comedyClub(string|Closure|null $identifier = null, Closure|null $callback = null)
132
 * @method self|ComedyEvent comedyEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
133
 * @method self|Comment comment(string|Closure|null $identifier = null, Closure|null $callback = null)
134
 * @method self|CommentAction commentAction(string|Closure|null $identifier = null, Closure|null $callback = null)
135
 * @method self|CommunicateAction communicateAction(string|Closure|null $identifier = null, Closure|null $callback = null)
136
 * @method self|CompoundPriceSpecification compoundPriceSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
137
 * @method self|ComputerLanguage computerLanguage(string|Closure|null $identifier = null, Closure|null $callback = null)
138
 * @method self|ComputerStore computerStore(string|Closure|null $identifier = null, Closure|null $callback = null)
139
 * @method self|ConfirmAction confirmAction(string|Closure|null $identifier = null, Closure|null $callback = null)
140
 * @method self|ConsumeAction consumeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
141
 * @method self|ContactPage contactPage(string|Closure|null $identifier = null, Closure|null $callback = null)
142
 * @method self|ContactPoint contactPoint(string|Closure|null $identifier = null, Closure|null $callback = null)
143
 * @method self|ContactPointOption contactPointOption(string|Closure|null $identifier = null, Closure|null $callback = null)
144
 * @method self|Continent continent(string|Closure|null $identifier = null, Closure|null $callback = null)
145
 * @method self|ControlAction controlAction(string|Closure|null $identifier = null, Closure|null $callback = null)
146
 * @method self|ConvenienceStore convenienceStore(string|Closure|null $identifier = null, Closure|null $callback = null)
147
 * @method self|Conversation conversation(string|Closure|null $identifier = null, Closure|null $callback = null)
148
 * @method self|CookAction cookAction(string|Closure|null $identifier = null, Closure|null $callback = null)
149
 * @method self|Corporation corporation(string|Closure|null $identifier = null, Closure|null $callback = null)
150
 * @method self|Country country(string|Closure|null $identifier = null, Closure|null $callback = null)
151
 * @method self|Course course(string|Closure|null $identifier = null, Closure|null $callback = null)
152
 * @method self|CourseInstance courseInstance(string|Closure|null $identifier = null, Closure|null $callback = null)
153
 * @method self|Courthouse courthouse(string|Closure|null $identifier = null, Closure|null $callback = null)
154
 * @method self|CreateAction createAction(string|Closure|null $identifier = null, Closure|null $callback = null)
155
 * @method self|CreativeWork creativeWork(string|Closure|null $identifier = null, Closure|null $callback = null)
156
 * @method self|CreativeWorkSeason creativeWorkSeason(string|Closure|null $identifier = null, Closure|null $callback = null)
157
 * @method self|CreativeWorkSeries creativeWorkSeries(string|Closure|null $identifier = null, Closure|null $callback = null)
158
 * @method self|CreditCard creditCard(string|Closure|null $identifier = null, Closure|null $callback = null)
159
 * @method self|Crematorium crematorium(string|Closure|null $identifier = null, Closure|null $callback = null)
160
 * @method self|CurrencyConversionService currencyConversionService(string|Closure|null $identifier = null, Closure|null $callback = null)
161
 * @method self|DanceEvent danceEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
162
 * @method self|DanceGroup danceGroup(string|Closure|null $identifier = null, Closure|null $callback = null)
163
 * @method self|DataCatalog dataCatalog(string|Closure|null $identifier = null, Closure|null $callback = null)
164
 * @method self|DataDownload dataDownload(string|Closure|null $identifier = null, Closure|null $callback = null)
165
 * @method self|DataFeed dataFeed(string|Closure|null $identifier = null, Closure|null $callback = null)
166
 * @method self|DataFeedItem dataFeedItem(string|Closure|null $identifier = null, Closure|null $callback = null)
167
 * @method self|Dataset dataset(string|Closure|null $identifier = null, Closure|null $callback = null)
168
 * @method self|DatedMoneySpecification datedMoneySpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
169
 * @method self|DayOfWeek dayOfWeek(string|Closure|null $identifier = null, Closure|null $callback = null)
170
 * @method self|DaySpa daySpa(string|Closure|null $identifier = null, Closure|null $callback = null)
171
 * @method self|DeactivateAction deactivateAction(string|Closure|null $identifier = null, Closure|null $callback = null)
172
 * @method self|DefenceEstablishment defenceEstablishment(string|Closure|null $identifier = null, Closure|null $callback = null)
173
 * @method self|DeleteAction deleteAction(string|Closure|null $identifier = null, Closure|null $callback = null)
174
 * @method self|DeliveryChargeSpecification deliveryChargeSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
175
 * @method self|DeliveryEvent deliveryEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
176
 * @method self|DeliveryMethod deliveryMethod(string|Closure|null $identifier = null, Closure|null $callback = null)
177
 * @method self|Demand demand(string|Closure|null $identifier = null, Closure|null $callback = null)
178
 * @method self|Dentist dentist(string|Closure|null $identifier = null, Closure|null $callback = null)
179
 * @method self|DepartAction departAction(string|Closure|null $identifier = null, Closure|null $callback = null)
180
 * @method self|DepartmentStore departmentStore(string|Closure|null $identifier = null, Closure|null $callback = null)
181
 * @method self|DepositAccount depositAccount(string|Closure|null $identifier = null, Closure|null $callback = null)
182
 * @method self|DigitalDocument digitalDocument(string|Closure|null $identifier = null, Closure|null $callback = null)
183
 * @method self|DigitalDocumentPermission digitalDocumentPermission(string|Closure|null $identifier = null, Closure|null $callback = null)
184
 * @method self|DigitalDocumentPermissionType digitalDocumentPermissionType(string|Closure|null $identifier = null, Closure|null $callback = null)
185
 * @method self|DisagreeAction disagreeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
186
 * @method self|DiscoverAction discoverAction(string|Closure|null $identifier = null, Closure|null $callback = null)
187
 * @method self|DiscussionForumPosting discussionForumPosting(string|Closure|null $identifier = null, Closure|null $callback = null)
188
 * @method self|DislikeAction dislikeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
189
 * @method self|Distance distance(string|Closure|null $identifier = null, Closure|null $callback = null)
190
 * @method self|Distillery distillery(string|Closure|null $identifier = null, Closure|null $callback = null)
191
 * @method self|DonateAction donateAction(string|Closure|null $identifier = null, Closure|null $callback = null)
192
 * @method self|DownloadAction downloadAction(string|Closure|null $identifier = null, Closure|null $callback = null)
193
 * @method self|DrawAction drawAction(string|Closure|null $identifier = null, Closure|null $callback = null)
194
 * @method self|DrinkAction drinkAction(string|Closure|null $identifier = null, Closure|null $callback = null)
195
 * @method self|DriveWheelConfigurationValue driveWheelConfigurationValue(string|Closure|null $identifier = null, Closure|null $callback = null)
196
 * @method self|DryCleaningOrLaundry dryCleaningOrLaundry(string|Closure|null $identifier = null, Closure|null $callback = null)
197
 * @method self|Duration duration(string|Closure|null $identifier = null, Closure|null $callback = null)
198
 * @method self|EatAction eatAction(string|Closure|null $identifier = null, Closure|null $callback = null)
199
 * @method self|EducationEvent educationEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
200
 * @method self|EducationalAudience educationalAudience(string|Closure|null $identifier = null, Closure|null $callback = null)
201
 * @method self|EducationalOrganization educationalOrganization(string|Closure|null $identifier = null, Closure|null $callback = null)
202
 * @method self|Electrician electrician(string|Closure|null $identifier = null, Closure|null $callback = null)
203
 * @method self|ElectronicsStore electronicsStore(string|Closure|null $identifier = null, Closure|null $callback = null)
204
 * @method self|ElementarySchool elementarySchool(string|Closure|null $identifier = null, Closure|null $callback = null)
205
 * @method self|EmailMessage emailMessage(string|Closure|null $identifier = null, Closure|null $callback = null)
206
 * @method self|Embassy embassy(string|Closure|null $identifier = null, Closure|null $callback = null)
207
 * @method self|EmergencyService emergencyService(string|Closure|null $identifier = null, Closure|null $callback = null)
208
 * @method self|EmployeeRole employeeRole(string|Closure|null $identifier = null, Closure|null $callback = null)
209
 * @method self|EmployerAggregateRating employerAggregateRating(string|Closure|null $identifier = null, Closure|null $callback = null)
210
 * @method self|EmploymentAgency employmentAgency(string|Closure|null $identifier = null, Closure|null $callback = null)
211
 * @method self|EndorseAction endorseAction(string|Closure|null $identifier = null, Closure|null $callback = null)
212
 * @method self|EndorsementRating endorsementRating(string|Closure|null $identifier = null, Closure|null $callback = null)
213
 * @method self|Energy energy(string|Closure|null $identifier = null, Closure|null $callback = null)
214
 * @method self|EngineSpecification engineSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
215
 * @method self|EntertainmentBusiness entertainmentBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
216
 * @method self|EntryPoint entryPoint(string|Closure|null $identifier = null, Closure|null $callback = null)
217
 * @method self|Enumeration enumeration(string|Closure|null $identifier = null, Closure|null $callback = null)
218
 * @method self|Episode episode(string|Closure|null $identifier = null, Closure|null $callback = null)
219
 * @method self|Event event(string|Closure|null $identifier = null, Closure|null $callback = null)
220
 * @method self|EventReservation eventReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
221
 * @method self|EventStatusType eventStatusType(string|Closure|null $identifier = null, Closure|null $callback = null)
222
 * @method self|EventVenue eventVenue(string|Closure|null $identifier = null, Closure|null $callback = null)
223
 * @method self|ExerciseAction exerciseAction(string|Closure|null $identifier = null, Closure|null $callback = null)
224
 * @method self|ExerciseGym exerciseGym(string|Closure|null $identifier = null, Closure|null $callback = null)
225
 * @method self|ExhibitionEvent exhibitionEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
226
 * @method self|FAQPage fAQPage(string|Closure|null $identifier = null, Closure|null $callback = null)
227
 * @method self|FMRadioChannel fMRadioChannel(string|Closure|null $identifier = null, Closure|null $callback = null)
228
 * @method self|FastFoodRestaurant fastFoodRestaurant(string|Closure|null $identifier = null, Closure|null $callback = null)
229
 * @method self|Festival festival(string|Closure|null $identifier = null, Closure|null $callback = null)
230
 * @method self|FilmAction filmAction(string|Closure|null $identifier = null, Closure|null $callback = null)
231
 * @method self|FinancialProduct financialProduct(string|Closure|null $identifier = null, Closure|null $callback = null)
232
 * @method self|FinancialService financialService(string|Closure|null $identifier = null, Closure|null $callback = null)
233
 * @method self|FindAction findAction(string|Closure|null $identifier = null, Closure|null $callback = null)
234
 * @method self|FireStation fireStation(string|Closure|null $identifier = null, Closure|null $callback = null)
235
 * @method self|Flight flight(string|Closure|null $identifier = null, Closure|null $callback = null)
236
 * @method self|FlightReservation flightReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
237
 * @method self|Florist florist(string|Closure|null $identifier = null, Closure|null $callback = null)
238
 * @method self|FollowAction followAction(string|Closure|null $identifier = null, Closure|null $callback = null)
239
 * @method self|FoodEstablishment foodEstablishment(string|Closure|null $identifier = null, Closure|null $callback = null)
240
 * @method self|FoodEstablishmentReservation foodEstablishmentReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
241
 * @method self|FoodEvent foodEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
242
 * @method self|FoodService foodService(string|Closure|null $identifier = null, Closure|null $callback = null)
243
 * @method self|FurnitureStore furnitureStore(string|Closure|null $identifier = null, Closure|null $callback = null)
244
 * @method self|Game game(string|Closure|null $identifier = null, Closure|null $callback = null)
245
 * @method self|GamePlayMode gamePlayMode(string|Closure|null $identifier = null, Closure|null $callback = null)
246
 * @method self|GameServer gameServer(string|Closure|null $identifier = null, Closure|null $callback = null)
247
 * @method self|GameServerStatus gameServerStatus(string|Closure|null $identifier = null, Closure|null $callback = null)
248
 * @method self|GardenStore gardenStore(string|Closure|null $identifier = null, Closure|null $callback = null)
249
 * @method self|GasStation gasStation(string|Closure|null $identifier = null, Closure|null $callback = null)
250
 * @method self|GatedResidenceCommunity gatedResidenceCommunity(string|Closure|null $identifier = null, Closure|null $callback = null)
251
 * @method self|GenderType genderType(string|Closure|null $identifier = null, Closure|null $callback = null)
252
 * @method self|GeneralContractor generalContractor(string|Closure|null $identifier = null, Closure|null $callback = null)
253
 * @method self|GeoCircle geoCircle(string|Closure|null $identifier = null, Closure|null $callback = null)
254
 * @method self|GeoCoordinates geoCoordinates(string|Closure|null $identifier = null, Closure|null $callback = null)
255
 * @method self|GeoShape geoShape(string|Closure|null $identifier = null, Closure|null $callback = null)
256
 * @method self|GiveAction giveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
257
 * @method self|GolfCourse golfCourse(string|Closure|null $identifier = null, Closure|null $callback = null)
258
 * @method self|GovernmentBuilding governmentBuilding(string|Closure|null $identifier = null, Closure|null $callback = null)
259
 * @method self|GovernmentOffice governmentOffice(string|Closure|null $identifier = null, Closure|null $callback = null)
260
 * @method self|GovernmentOrganization governmentOrganization(string|Closure|null $identifier = null, Closure|null $callback = null)
261
 * @method self|GovernmentPermit governmentPermit(string|Closure|null $identifier = null, Closure|null $callback = null)
262
 * @method self|GovernmentService governmentService(string|Closure|null $identifier = null, Closure|null $callback = null)
263
 * @method self|GroceryStore groceryStore(string|Closure|null $identifier = null, Closure|null $callback = null)
264
 * @method self|HVACBusiness hVACBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
265
 * @method self|HairSalon hairSalon(string|Closure|null $identifier = null, Closure|null $callback = null)
266
 * @method self|HardwareStore hardwareStore(string|Closure|null $identifier = null, Closure|null $callback = null)
267
 * @method self|HealthAndBeautyBusiness healthAndBeautyBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
268
 * @method self|HealthClub healthClub(string|Closure|null $identifier = null, Closure|null $callback = null)
269
 * @method self|HighSchool highSchool(string|Closure|null $identifier = null, Closure|null $callback = null)
270
 * @method self|HinduTemple hinduTemple(string|Closure|null $identifier = null, Closure|null $callback = null)
271
 * @method self|HobbyShop hobbyShop(string|Closure|null $identifier = null, Closure|null $callback = null)
272
 * @method self|HomeAndConstructionBusiness homeAndConstructionBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
273
 * @method self|HomeGoodsStore homeGoodsStore(string|Closure|null $identifier = null, Closure|null $callback = null)
274
 * @method self|Hospital hospital(string|Closure|null $identifier = null, Closure|null $callback = null)
275
 * @method self|Hostel hostel(string|Closure|null $identifier = null, Closure|null $callback = null)
276
 * @method self|Hotel hotel(string|Closure|null $identifier = null, Closure|null $callback = null)
277
 * @method self|HotelRoom hotelRoom(string|Closure|null $identifier = null, Closure|null $callback = null)
278
 * @method self|House house(string|Closure|null $identifier = null, Closure|null $callback = null)
279
 * @method self|HousePainter housePainter(string|Closure|null $identifier = null, Closure|null $callback = null)
280
 * @method self|HowTo howTo(string|Closure|null $identifier = null, Closure|null $callback = null)
281
 * @method self|HowToDirection howToDirection(string|Closure|null $identifier = null, Closure|null $callback = null)
282
 * @method self|HowToItem howToItem(string|Closure|null $identifier = null, Closure|null $callback = null)
283
 * @method self|HowToSection howToSection(string|Closure|null $identifier = null, Closure|null $callback = null)
284
 * @method self|HowToStep howToStep(string|Closure|null $identifier = null, Closure|null $callback = null)
285
 * @method self|HowToSupply howToSupply(string|Closure|null $identifier = null, Closure|null $callback = null)
286
 * @method self|HowToTip howToTip(string|Closure|null $identifier = null, Closure|null $callback = null)
287
 * @method self|HowToTool howToTool(string|Closure|null $identifier = null, Closure|null $callback = null)
288
 * @method self|IceCreamShop iceCreamShop(string|Closure|null $identifier = null, Closure|null $callback = null)
289
 * @method self|IgnoreAction ignoreAction(string|Closure|null $identifier = null, Closure|null $callback = null)
290
 * @method self|ImageGallery imageGallery(string|Closure|null $identifier = null, Closure|null $callback = null)
291
 * @method self|ImageObject imageObject(string|Closure|null $identifier = null, Closure|null $callback = null)
292
 * @method self|IndividualProduct individualProduct(string|Closure|null $identifier = null, Closure|null $callback = null)
293
 * @method self|InformAction informAction(string|Closure|null $identifier = null, Closure|null $callback = null)
294
 * @method self|InsertAction insertAction(string|Closure|null $identifier = null, Closure|null $callback = null)
295
 * @method self|InstallAction installAction(string|Closure|null $identifier = null, Closure|null $callback = null)
296
 * @method self|InsuranceAgency insuranceAgency(string|Closure|null $identifier = null, Closure|null $callback = null)
297
 * @method self|Intangible intangible(string|Closure|null $identifier = null, Closure|null $callback = null)
298
 * @method self|InteractAction interactAction(string|Closure|null $identifier = null, Closure|null $callback = null)
299
 * @method self|InteractionCounter interactionCounter(string|Closure|null $identifier = null, Closure|null $callback = null)
300
 * @method self|InternetCafe internetCafe(string|Closure|null $identifier = null, Closure|null $callback = null)
301
 * @method self|InvestmentOrDeposit investmentOrDeposit(string|Closure|null $identifier = null, Closure|null $callback = null)
302
 * @method self|InviteAction inviteAction(string|Closure|null $identifier = null, Closure|null $callback = null)
303
 * @method self|Invoice invoice(string|Closure|null $identifier = null, Closure|null $callback = null)
304
 * @method self|ItemAvailability itemAvailability(string|Closure|null $identifier = null, Closure|null $callback = null)
305
 * @method self|ItemList itemList(string|Closure|null $identifier = null, Closure|null $callback = null)
306
 * @method self|ItemListOrderType itemListOrderType(string|Closure|null $identifier = null, Closure|null $callback = null)
307
 * @method self|ItemPage itemPage(string|Closure|null $identifier = null, Closure|null $callback = null)
308
 * @method self|JewelryStore jewelryStore(string|Closure|null $identifier = null, Closure|null $callback = null)
309
 * @method self|JobPosting jobPosting(string|Closure|null $identifier = null, Closure|null $callback = null)
310
 * @method self|JoinAction joinAction(string|Closure|null $identifier = null, Closure|null $callback = null)
311
 * @method self|LakeBodyOfWater lakeBodyOfWater(string|Closure|null $identifier = null, Closure|null $callback = null)
312
 * @method self|Landform landform(string|Closure|null $identifier = null, Closure|null $callback = null)
313
 * @method self|LandmarksOrHistoricalBuildings landmarksOrHistoricalBuildings(string|Closure|null $identifier = null, Closure|null $callback = null)
314
 * @method self|Language language(string|Closure|null $identifier = null, Closure|null $callback = null)
315
 * @method self|LeaveAction leaveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
316
 * @method self|LegalService legalService(string|Closure|null $identifier = null, Closure|null $callback = null)
317
 * @method self|LegislativeBuilding legislativeBuilding(string|Closure|null $identifier = null, Closure|null $callback = null)
318
 * @method self|LendAction lendAction(string|Closure|null $identifier = null, Closure|null $callback = null)
319
 * @method self|Library library(string|Closure|null $identifier = null, Closure|null $callback = null)
320
 * @method self|LikeAction likeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
321
 * @method self|LiquorStore liquorStore(string|Closure|null $identifier = null, Closure|null $callback = null)
322
 * @method self|ListItem listItem(string|Closure|null $identifier = null, Closure|null $callback = null)
323
 * @method self|ListenAction listenAction(string|Closure|null $identifier = null, Closure|null $callback = null)
324
 * @method self|LiteraryEvent literaryEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
325
 * @method self|LiveBlogPosting liveBlogPosting(string|Closure|null $identifier = null, Closure|null $callback = null)
326
 * @method self|LoanOrCredit loanOrCredit(string|Closure|null $identifier = null, Closure|null $callback = null)
327
 * @method self|LocalBusiness localBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
328
 * @method self|LocationFeatureSpecification locationFeatureSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
329
 * @method self|LockerDelivery lockerDelivery(string|Closure|null $identifier = null, Closure|null $callback = null)
330
 * @method self|Locksmith locksmith(string|Closure|null $identifier = null, Closure|null $callback = null)
331
 * @method self|LodgingBusiness lodgingBusiness(string|Closure|null $identifier = null, Closure|null $callback = null)
332
 * @method self|LodgingReservation lodgingReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
333
 * @method self|LoseAction loseAction(string|Closure|null $identifier = null, Closure|null $callback = null)
334
 * @method self|Map map(string|Closure|null $identifier = null, Closure|null $callback = null)
335
 * @method self|MapCategoryType mapCategoryType(string|Closure|null $identifier = null, Closure|null $callback = null)
336
 * @method self|MarryAction marryAction(string|Closure|null $identifier = null, Closure|null $callback = null)
337
 * @method self|Mass mass(string|Closure|null $identifier = null, Closure|null $callback = null)
338
 * @method self|MediaGallery mediaGallery(string|Closure|null $identifier = null, Closure|null $callback = null)
339
 * @method self|MediaObject mediaObject(string|Closure|null $identifier = null, Closure|null $callback = null)
340
 * @method self|MediaSubscription mediaSubscription(string|Closure|null $identifier = null, Closure|null $callback = null)
341
 * @method self|MedicalOrganization medicalOrganization(string|Closure|null $identifier = null, Closure|null $callback = null)
342
 * @method self|MeetingRoom meetingRoom(string|Closure|null $identifier = null, Closure|null $callback = null)
343
 * @method self|MensClothingStore mensClothingStore(string|Closure|null $identifier = null, Closure|null $callback = null)
344
 * @method self|Menu menu(string|Closure|null $identifier = null, Closure|null $callback = null)
345
 * @method self|MenuItem menuItem(string|Closure|null $identifier = null, Closure|null $callback = null)
346
 * @method self|MenuSection menuSection(string|Closure|null $identifier = null, Closure|null $callback = null)
347
 * @method self|Message message(string|Closure|null $identifier = null, Closure|null $callback = null)
348
 * @method self|MiddleSchool middleSchool(string|Closure|null $identifier = null, Closure|null $callback = null)
349
 * @method self|MobileApplication mobileApplication(string|Closure|null $identifier = null, Closure|null $callback = null)
350
 * @method self|MobilePhoneStore mobilePhoneStore(string|Closure|null $identifier = null, Closure|null $callback = null)
351
 * @method self|MonetaryAmount monetaryAmount(string|Closure|null $identifier = null, Closure|null $callback = null)
352
 * @method self|MonetaryAmountDistribution monetaryAmountDistribution(string|Closure|null $identifier = null, Closure|null $callback = null)
353
 * @method self|Mosque mosque(string|Closure|null $identifier = null, Closure|null $callback = null)
354
 * @method self|Motel motel(string|Closure|null $identifier = null, Closure|null $callback = null)
355
 * @method self|MotorcycleDealer motorcycleDealer(string|Closure|null $identifier = null, Closure|null $callback = null)
356
 * @method self|MotorcycleRepair motorcycleRepair(string|Closure|null $identifier = null, Closure|null $callback = null)
357
 * @method self|Mountain mountain(string|Closure|null $identifier = null, Closure|null $callback = null)
358
 * @method self|MoveAction moveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
359
 * @method self|Movie movie(string|Closure|null $identifier = null, Closure|null $callback = null)
360
 * @method self|MovieClip movieClip(string|Closure|null $identifier = null, Closure|null $callback = null)
361
 * @method self|MovieRentalStore movieRentalStore(string|Closure|null $identifier = null, Closure|null $callback = null)
362
 * @method self|MovieSeries movieSeries(string|Closure|null $identifier = null, Closure|null $callback = null)
363
 * @method self|MovieTheater movieTheater(string|Closure|null $identifier = null, Closure|null $callback = null)
364
 * @method self|MovingCompany movingCompany(string|Closure|null $identifier = null, Closure|null $callback = null)
365
 * @method self|Museum museum(string|Closure|null $identifier = null, Closure|null $callback = null)
366
 * @method self|MusicAlbum musicAlbum(string|Closure|null $identifier = null, Closure|null $callback = null)
367
 * @method self|MusicAlbumProductionType musicAlbumProductionType(string|Closure|null $identifier = null, Closure|null $callback = null)
368
 * @method self|MusicAlbumReleaseType musicAlbumReleaseType(string|Closure|null $identifier = null, Closure|null $callback = null)
369
 * @method self|MusicComposition musicComposition(string|Closure|null $identifier = null, Closure|null $callback = null)
370
 * @method self|MusicEvent musicEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
371
 * @method self|MusicGroup musicGroup(string|Closure|null $identifier = null, Closure|null $callback = null)
372
 * @method self|MusicPlaylist musicPlaylist(string|Closure|null $identifier = null, Closure|null $callback = null)
373
 * @method self|MusicRecording musicRecording(string|Closure|null $identifier = null, Closure|null $callback = null)
374
 * @method self|MusicRelease musicRelease(string|Closure|null $identifier = null, Closure|null $callback = null)
375
 * @method self|MusicReleaseFormatType musicReleaseFormatType(string|Closure|null $identifier = null, Closure|null $callback = null)
376
 * @method self|MusicStore musicStore(string|Closure|null $identifier = null, Closure|null $callback = null)
377
 * @method self|MusicVenue musicVenue(string|Closure|null $identifier = null, Closure|null $callback = null)
378
 * @method self|MusicVideoObject musicVideoObject(string|Closure|null $identifier = null, Closure|null $callback = null)
379
 * @method self|NGO nGO(string|Closure|null $identifier = null, Closure|null $callback = null)
380
 * @method self|NailSalon nailSalon(string|Closure|null $identifier = null, Closure|null $callback = null)
381
 * @method self|NewsArticle newsArticle(string|Closure|null $identifier = null, Closure|null $callback = null)
382
 * @method self|NightClub nightClub(string|Closure|null $identifier = null, Closure|null $callback = null)
383
 * @method self|Notary notary(string|Closure|null $identifier = null, Closure|null $callback = null)
384
 * @method self|NoteDigitalDocument noteDigitalDocument(string|Closure|null $identifier = null, Closure|null $callback = null)
385
 * @method self|NutritionInformation nutritionInformation(string|Closure|null $identifier = null, Closure|null $callback = null)
386
 * @method self|Occupation occupation(string|Closure|null $identifier = null, Closure|null $callback = null)
387
 * @method self|OceanBodyOfWater oceanBodyOfWater(string|Closure|null $identifier = null, Closure|null $callback = null)
388
 * @method self|Offer offer(string|Closure|null $identifier = null, Closure|null $callback = null)
389
 * @method self|OfferCatalog offerCatalog(string|Closure|null $identifier = null, Closure|null $callback = null)
390
 * @method self|OfferItemCondition offerItemCondition(string|Closure|null $identifier = null, Closure|null $callback = null)
391
 * @method self|OfficeEquipmentStore officeEquipmentStore(string|Closure|null $identifier = null, Closure|null $callback = null)
392
 * @method self|OnDemandEvent onDemandEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
393
 * @method self|OpeningHoursSpecification openingHoursSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
394
 * @method self|Order order(string|Closure|null $identifier = null, Closure|null $callback = null)
395
 * @method self|OrderAction orderAction(string|Closure|null $identifier = null, Closure|null $callback = null)
396
 * @method self|OrderItem orderItem(string|Closure|null $identifier = null, Closure|null $callback = null)
397
 * @method self|OrderStatus orderStatus(string|Closure|null $identifier = null, Closure|null $callback = null)
398
 * @method self|Organization organization(string|Closure|null $identifier = null, Closure|null $callback = null)
399
 * @method self|OrganizationRole organizationRole(string|Closure|null $identifier = null, Closure|null $callback = null)
400
 * @method self|OrganizeAction organizeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
401
 * @method self|OutletStore outletStore(string|Closure|null $identifier = null, Closure|null $callback = null)
402
 * @method self|OwnershipInfo ownershipInfo(string|Closure|null $identifier = null, Closure|null $callback = null)
403
 * @method self|PaintAction paintAction(string|Closure|null $identifier = null, Closure|null $callback = null)
404
 * @method self|Painting painting(string|Closure|null $identifier = null, Closure|null $callback = null)
405
 * @method self|ParcelDelivery parcelDelivery(string|Closure|null $identifier = null, Closure|null $callback = null)
406
 * @method self|ParcelService parcelService(string|Closure|null $identifier = null, Closure|null $callback = null)
407
 * @method self|ParentAudience parentAudience(string|Closure|null $identifier = null, Closure|null $callback = null)
408
 * @method self|Park park(string|Closure|null $identifier = null, Closure|null $callback = null)
409
 * @method self|ParkingFacility parkingFacility(string|Closure|null $identifier = null, Closure|null $callback = null)
410
 * @method self|PawnShop pawnShop(string|Closure|null $identifier = null, Closure|null $callback = null)
411
 * @method self|PayAction payAction(string|Closure|null $identifier = null, Closure|null $callback = null)
412
 * @method self|PaymentCard paymentCard(string|Closure|null $identifier = null, Closure|null $callback = null)
413
 * @method self|PaymentChargeSpecification paymentChargeSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
414
 * @method self|PaymentMethod paymentMethod(string|Closure|null $identifier = null, Closure|null $callback = null)
415
 * @method self|PaymentService paymentService(string|Closure|null $identifier = null, Closure|null $callback = null)
416
 * @method self|PaymentStatusType paymentStatusType(string|Closure|null $identifier = null, Closure|null $callback = null)
417
 * @method self|PeopleAudience peopleAudience(string|Closure|null $identifier = null, Closure|null $callback = null)
418
 * @method self|PerformAction performAction(string|Closure|null $identifier = null, Closure|null $callback = null)
419
 * @method self|PerformanceRole performanceRole(string|Closure|null $identifier = null, Closure|null $callback = null)
420
 * @method self|PerformingArtsTheater performingArtsTheater(string|Closure|null $identifier = null, Closure|null $callback = null)
421
 * @method self|PerformingGroup performingGroup(string|Closure|null $identifier = null, Closure|null $callback = null)
422
 * @method self|Periodical periodical(string|Closure|null $identifier = null, Closure|null $callback = null)
423
 * @method self|Permit permit(string|Closure|null $identifier = null, Closure|null $callback = null)
424
 * @method self|Person person(string|Closure|null $identifier = null, Closure|null $callback = null)
425
 * @method self|PetStore petStore(string|Closure|null $identifier = null, Closure|null $callback = null)
426
 * @method self|Pharmacy pharmacy(string|Closure|null $identifier = null, Closure|null $callback = null)
427
 * @method self|Photograph photograph(string|Closure|null $identifier = null, Closure|null $callback = null)
428
 * @method self|PhotographAction photographAction(string|Closure|null $identifier = null, Closure|null $callback = null)
429
 * @method self|Physician physician(string|Closure|null $identifier = null, Closure|null $callback = null)
430
 * @method self|Place place(string|Closure|null $identifier = null, Closure|null $callback = null)
431
 * @method self|PlaceOfWorship placeOfWorship(string|Closure|null $identifier = null, Closure|null $callback = null)
432
 * @method self|PlanAction planAction(string|Closure|null $identifier = null, Closure|null $callback = null)
433
 * @method self|PlayAction playAction(string|Closure|null $identifier = null, Closure|null $callback = null)
434
 * @method self|Playground playground(string|Closure|null $identifier = null, Closure|null $callback = null)
435
 * @method self|Plumber plumber(string|Closure|null $identifier = null, Closure|null $callback = null)
436
 * @method self|PoliceStation policeStation(string|Closure|null $identifier = null, Closure|null $callback = null)
437
 * @method self|Pond pond(string|Closure|null $identifier = null, Closure|null $callback = null)
438
 * @method self|PostOffice postOffice(string|Closure|null $identifier = null, Closure|null $callback = null)
439
 * @method self|PostalAddress postalAddress(string|Closure|null $identifier = null, Closure|null $callback = null)
440
 * @method self|PreOrderAction preOrderAction(string|Closure|null $identifier = null, Closure|null $callback = null)
441
 * @method self|PrependAction prependAction(string|Closure|null $identifier = null, Closure|null $callback = null)
442
 * @method self|Preschool preschool(string|Closure|null $identifier = null, Closure|null $callback = null)
443
 * @method self|PresentationDigitalDocument presentationDigitalDocument(string|Closure|null $identifier = null, Closure|null $callback = null)
444
 * @method self|PriceSpecification priceSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
445
 * @method self|Product product(string|Closure|null $identifier = null, Closure|null $callback = null)
446
 * @method self|ProductModel productModel(string|Closure|null $identifier = null, Closure|null $callback = null)
447
 * @method self|ProfessionalService professionalService(string|Closure|null $identifier = null, Closure|null $callback = null)
448
 * @method self|ProfilePage profilePage(string|Closure|null $identifier = null, Closure|null $callback = null)
449
 * @method self|ProgramMembership programMembership(string|Closure|null $identifier = null, Closure|null $callback = null)
450
 * @method self|PropertyValue propertyValue(string|Closure|null $identifier = null, Closure|null $callback = null)
451
 * @method self|PropertyValueSpecification propertyValueSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
452
 * @method self|PublicSwimmingPool publicSwimmingPool(string|Closure|null $identifier = null, Closure|null $callback = null)
453
 * @method self|PublicationEvent publicationEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
454
 * @method self|PublicationIssue publicationIssue(string|Closure|null $identifier = null, Closure|null $callback = null)
455
 * @method self|PublicationVolume publicationVolume(string|Closure|null $identifier = null, Closure|null $callback = null)
456
 * @method self|QAPage qAPage(string|Closure|null $identifier = null, Closure|null $callback = null)
457
 * @method self|QualitativeValue qualitativeValue(string|Closure|null $identifier = null, Closure|null $callback = null)
458
 * @method self|QuantitativeValue quantitativeValue(string|Closure|null $identifier = null, Closure|null $callback = null)
459
 * @method self|QuantitativeValueDistribution quantitativeValueDistribution(string|Closure|null $identifier = null, Closure|null $callback = null)
460
 * @method self|Quantity quantity(string|Closure|null $identifier = null, Closure|null $callback = null)
461
 * @method self|Question question(string|Closure|null $identifier = null, Closure|null $callback = null)
462
 * @method self|QuoteAction quoteAction(string|Closure|null $identifier = null, Closure|null $callback = null)
463
 * @method self|RVPark rVPark(string|Closure|null $identifier = null, Closure|null $callback = null)
464
 * @method self|RadioChannel radioChannel(string|Closure|null $identifier = null, Closure|null $callback = null)
465
 * @method self|RadioClip radioClip(string|Closure|null $identifier = null, Closure|null $callback = null)
466
 * @method self|RadioEpisode radioEpisode(string|Closure|null $identifier = null, Closure|null $callback = null)
467
 * @method self|RadioSeason radioSeason(string|Closure|null $identifier = null, Closure|null $callback = null)
468
 * @method self|RadioSeries radioSeries(string|Closure|null $identifier = null, Closure|null $callback = null)
469
 * @method self|RadioStation radioStation(string|Closure|null $identifier = null, Closure|null $callback = null)
470
 * @method self|Rating rating(string|Closure|null $identifier = null, Closure|null $callback = null)
471
 * @method self|ReactAction reactAction(string|Closure|null $identifier = null, Closure|null $callback = null)
472
 * @method self|ReadAction readAction(string|Closure|null $identifier = null, Closure|null $callback = null)
473
 * @method self|RealEstateAgent realEstateAgent(string|Closure|null $identifier = null, Closure|null $callback = null)
474
 * @method self|ReceiveAction receiveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
475
 * @method self|Recipe recipe(string|Closure|null $identifier = null, Closure|null $callback = null)
476
 * @method self|RecyclingCenter recyclingCenter(string|Closure|null $identifier = null, Closure|null $callback = null)
477
 * @method self|RegisterAction registerAction(string|Closure|null $identifier = null, Closure|null $callback = null)
478
 * @method self|RejectAction rejectAction(string|Closure|null $identifier = null, Closure|null $callback = null)
479
 * @method self|RentAction rentAction(string|Closure|null $identifier = null, Closure|null $callback = null)
480
 * @method self|RentalCarReservation rentalCarReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
481
 * @method self|ReplaceAction replaceAction(string|Closure|null $identifier = null, Closure|null $callback = null)
482
 * @method self|ReplyAction replyAction(string|Closure|null $identifier = null, Closure|null $callback = null)
483
 * @method self|Report report(string|Closure|null $identifier = null, Closure|null $callback = null)
484
 * @method self|Reservation reservation(string|Closure|null $identifier = null, Closure|null $callback = null)
485
 * @method self|ReservationPackage reservationPackage(string|Closure|null $identifier = null, Closure|null $callback = null)
486
 * @method self|ReservationStatusType reservationStatusType(string|Closure|null $identifier = null, Closure|null $callback = null)
487
 * @method self|ReserveAction reserveAction(string|Closure|null $identifier = null, Closure|null $callback = null)
488
 * @method self|Reservoir reservoir(string|Closure|null $identifier = null, Closure|null $callback = null)
489
 * @method self|Residence residence(string|Closure|null $identifier = null, Closure|null $callback = null)
490
 * @method self|Resort resort(string|Closure|null $identifier = null, Closure|null $callback = null)
491
 * @method self|Restaurant restaurant(string|Closure|null $identifier = null, Closure|null $callback = null)
492
 * @method self|RestrictedDiet restrictedDiet(string|Closure|null $identifier = null, Closure|null $callback = null)
493
 * @method self|ResumeAction resumeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
494
 * @method self|ReturnAction returnAction(string|Closure|null $identifier = null, Closure|null $callback = null)
495
 * @method self|Review review(string|Closure|null $identifier = null, Closure|null $callback = null)
496
 * @method self|ReviewAction reviewAction(string|Closure|null $identifier = null, Closure|null $callback = null)
497
 * @method self|RiverBodyOfWater riverBodyOfWater(string|Closure|null $identifier = null, Closure|null $callback = null)
498
 * @method self|Role role(string|Closure|null $identifier = null, Closure|null $callback = null)
499
 * @method self|RoofingContractor roofingContractor(string|Closure|null $identifier = null, Closure|null $callback = null)
500
 * @method self|Room room(string|Closure|null $identifier = null, Closure|null $callback = null)
501
 * @method self|RsvpAction rsvpAction(string|Closure|null $identifier = null, Closure|null $callback = null)
502
 * @method self|RsvpResponseType rsvpResponseType(string|Closure|null $identifier = null, Closure|null $callback = null)
503
 * @method self|SaleEvent saleEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
504
 * @method self|ScheduleAction scheduleAction(string|Closure|null $identifier = null, Closure|null $callback = null)
505
 * @method self|ScholarlyArticle scholarlyArticle(string|Closure|null $identifier = null, Closure|null $callback = null)
506
 * @method self|School school(string|Closure|null $identifier = null, Closure|null $callback = null)
507
 * @method self|ScreeningEvent screeningEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
508
 * @method self|Sculpture sculpture(string|Closure|null $identifier = null, Closure|null $callback = null)
509
 * @method self|SeaBodyOfWater seaBodyOfWater(string|Closure|null $identifier = null, Closure|null $callback = null)
510
 * @method self|SearchAction searchAction(string|Closure|null $identifier = null, Closure|null $callback = null)
511
 * @method self|SearchResultsPage searchResultsPage(string|Closure|null $identifier = null, Closure|null $callback = null)
512
 * @method self|Season season(string|Closure|null $identifier = null, Closure|null $callback = null)
513
 * @method self|Seat seat(string|Closure|null $identifier = null, Closure|null $callback = null)
514
 * @method self|SelfStorage selfStorage(string|Closure|null $identifier = null, Closure|null $callback = null)
515
 * @method self|SellAction sellAction(string|Closure|null $identifier = null, Closure|null $callback = null)
516
 * @method self|SendAction sendAction(string|Closure|null $identifier = null, Closure|null $callback = null)
517
 * @method self|Series series(string|Closure|null $identifier = null, Closure|null $callback = null)
518
 * @method self|Service service(string|Closure|null $identifier = null, Closure|null $callback = null)
519
 * @method self|ServiceChannel serviceChannel(string|Closure|null $identifier = null, Closure|null $callback = null)
520
 * @method self|ShareAction shareAction(string|Closure|null $identifier = null, Closure|null $callback = null)
521
 * @method self|ShoeStore shoeStore(string|Closure|null $identifier = null, Closure|null $callback = null)
522
 * @method self|ShoppingCenter shoppingCenter(string|Closure|null $identifier = null, Closure|null $callback = null)
523
 * @method self|SingleFamilyResidence singleFamilyResidence(string|Closure|null $identifier = null, Closure|null $callback = null)
524
 * @method self|SiteNavigationElement siteNavigationElement(string|Closure|null $identifier = null, Closure|null $callback = null)
525
 * @method self|SkiResort skiResort(string|Closure|null $identifier = null, Closure|null $callback = null)
526
 * @method self|SocialEvent socialEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
527
 * @method self|SocialMediaPosting socialMediaPosting(string|Closure|null $identifier = null, Closure|null $callback = null)
528
 * @method self|SoftwareApplication softwareApplication(string|Closure|null $identifier = null, Closure|null $callback = null)
529
 * @method self|SoftwareSourceCode softwareSourceCode(string|Closure|null $identifier = null, Closure|null $callback = null)
530
 * @method self|SomeProducts someProducts(string|Closure|null $identifier = null, Closure|null $callback = null)
531
 * @method self|SpeakableSpecification speakableSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
532
 * @method self|Specialty specialty(string|Closure|null $identifier = null, Closure|null $callback = null)
533
 * @method self|SportingGoodsStore sportingGoodsStore(string|Closure|null $identifier = null, Closure|null $callback = null)
534
 * @method self|SportsActivityLocation sportsActivityLocation(string|Closure|null $identifier = null, Closure|null $callback = null)
535
 * @method self|SportsClub sportsClub(string|Closure|null $identifier = null, Closure|null $callback = null)
536
 * @method self|SportsEvent sportsEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
537
 * @method self|SportsOrganization sportsOrganization(string|Closure|null $identifier = null, Closure|null $callback = null)
538
 * @method self|SportsTeam sportsTeam(string|Closure|null $identifier = null, Closure|null $callback = null)
539
 * @method self|SpreadsheetDigitalDocument spreadsheetDigitalDocument(string|Closure|null $identifier = null, Closure|null $callback = null)
540
 * @method self|StadiumOrArena stadiumOrArena(string|Closure|null $identifier = null, Closure|null $callback = null)
541
 * @method self|State state(string|Closure|null $identifier = null, Closure|null $callback = null)
542
 * @method self|SteeringPositionValue steeringPositionValue(string|Closure|null $identifier = null, Closure|null $callback = null)
543
 * @method self|Store store(string|Closure|null $identifier = null, Closure|null $callback = null)
544
 * @method self|StructuredValue structuredValue(string|Closure|null $identifier = null, Closure|null $callback = null)
545
 * @method self|SubscribeAction subscribeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
546
 * @method self|SubwayStation subwayStation(string|Closure|null $identifier = null, Closure|null $callback = null)
547
 * @method self|Suite suite(string|Closure|null $identifier = null, Closure|null $callback = null)
548
 * @method self|SuspendAction suspendAction(string|Closure|null $identifier = null, Closure|null $callback = null)
549
 * @method self|Synagogue synagogue(string|Closure|null $identifier = null, Closure|null $callback = null)
550
 * @method self|TVClip tVClip(string|Closure|null $identifier = null, Closure|null $callback = null)
551
 * @method self|TVEpisode tVEpisode(string|Closure|null $identifier = null, Closure|null $callback = null)
552
 * @method self|TVSeason tVSeason(string|Closure|null $identifier = null, Closure|null $callback = null)
553
 * @method self|TVSeries tVSeries(string|Closure|null $identifier = null, Closure|null $callback = null)
554
 * @method self|Table table(string|Closure|null $identifier = null, Closure|null $callback = null)
555
 * @method self|TakeAction takeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
556
 * @method self|TattooParlor tattooParlor(string|Closure|null $identifier = null, Closure|null $callback = null)
557
 * @method self|Taxi taxi(string|Closure|null $identifier = null, Closure|null $callback = null)
558
 * @method self|TaxiReservation taxiReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
559
 * @method self|TaxiService taxiService(string|Closure|null $identifier = null, Closure|null $callback = null)
560
 * @method self|TaxiStand taxiStand(string|Closure|null $identifier = null, Closure|null $callback = null)
561
 * @method self|TechArticle techArticle(string|Closure|null $identifier = null, Closure|null $callback = null)
562
 * @method self|TelevisionChannel televisionChannel(string|Closure|null $identifier = null, Closure|null $callback = null)
563
 * @method self|TelevisionStation televisionStation(string|Closure|null $identifier = null, Closure|null $callback = null)
564
 * @method self|TennisComplex tennisComplex(string|Closure|null $identifier = null, Closure|null $callback = null)
565
 * @method self|TextDigitalDocument textDigitalDocument(string|Closure|null $identifier = null, Closure|null $callback = null)
566
 * @method self|TheaterEvent theaterEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
567
 * @method self|TheaterGroup theaterGroup(string|Closure|null $identifier = null, Closure|null $callback = null)
568
 * @method self|Thing thing(string|Closure|null $identifier = null, Closure|null $callback = null)
569
 * @method self|Ticket ticket(string|Closure|null $identifier = null, Closure|null $callback = null)
570
 * @method self|TieAction tieAction(string|Closure|null $identifier = null, Closure|null $callback = null)
571
 * @method self|TipAction tipAction(string|Closure|null $identifier = null, Closure|null $callback = null)
572
 * @method self|TireShop tireShop(string|Closure|null $identifier = null, Closure|null $callback = null)
573
 * @method self|TouristAttraction touristAttraction(string|Closure|null $identifier = null, Closure|null $callback = null)
574
 * @method self|TouristInformationCenter touristInformationCenter(string|Closure|null $identifier = null, Closure|null $callback = null)
575
 * @method self|ToyStore toyStore(string|Closure|null $identifier = null, Closure|null $callback = null)
576
 * @method self|TrackAction trackAction(string|Closure|null $identifier = null, Closure|null $callback = null)
577
 * @method self|TradeAction tradeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
578
 * @method self|TrainReservation trainReservation(string|Closure|null $identifier = null, Closure|null $callback = null)
579
 * @method self|TrainStation trainStation(string|Closure|null $identifier = null, Closure|null $callback = null)
580
 * @method self|TrainTrip trainTrip(string|Closure|null $identifier = null, Closure|null $callback = null)
581
 * @method self|TransferAction transferAction(string|Closure|null $identifier = null, Closure|null $callback = null)
582
 * @method self|TravelAction travelAction(string|Closure|null $identifier = null, Closure|null $callback = null)
583
 * @method self|TravelAgency travelAgency(string|Closure|null $identifier = null, Closure|null $callback = null)
584
 * @method self|Trip trip(string|Closure|null $identifier = null, Closure|null $callback = null)
585
 * @method self|TypeAndQuantityNode typeAndQuantityNode(string|Closure|null $identifier = null, Closure|null $callback = null)
586
 * @method self|UnRegisterAction unRegisterAction(string|Closure|null $identifier = null, Closure|null $callback = null)
587
 * @method self|UnitPriceSpecification unitPriceSpecification(string|Closure|null $identifier = null, Closure|null $callback = null)
588
 * @method self|UpdateAction updateAction(string|Closure|null $identifier = null, Closure|null $callback = null)
589
 * @method self|UseAction useAction(string|Closure|null $identifier = null, Closure|null $callback = null)
590
 * @method self|UserBlocks userBlocks(string|Closure|null $identifier = null, Closure|null $callback = null)
591
 * @method self|UserCheckins userCheckins(string|Closure|null $identifier = null, Closure|null $callback = null)
592
 * @method self|UserComments userComments(string|Closure|null $identifier = null, Closure|null $callback = null)
593
 * @method self|UserDownloads userDownloads(string|Closure|null $identifier = null, Closure|null $callback = null)
594
 * @method self|UserInteraction userInteraction(string|Closure|null $identifier = null, Closure|null $callback = null)
595
 * @method self|UserLikes userLikes(string|Closure|null $identifier = null, Closure|null $callback = null)
596
 * @method self|UserPageVisits userPageVisits(string|Closure|null $identifier = null, Closure|null $callback = null)
597
 * @method self|UserPlays userPlays(string|Closure|null $identifier = null, Closure|null $callback = null)
598
 * @method self|UserPlusOnes userPlusOnes(string|Closure|null $identifier = null, Closure|null $callback = null)
599
 * @method self|UserTweets userTweets(string|Closure|null $identifier = null, Closure|null $callback = null)
600
 * @method self|Vehicle vehicle(string|Closure|null $identifier = null, Closure|null $callback = null)
601
 * @method self|VideoGallery videoGallery(string|Closure|null $identifier = null, Closure|null $callback = null)
602
 * @method self|VideoGame videoGame(string|Closure|null $identifier = null, Closure|null $callback = null)
603
 * @method self|VideoGameClip videoGameClip(string|Closure|null $identifier = null, Closure|null $callback = null)
604
 * @method self|VideoGameSeries videoGameSeries(string|Closure|null $identifier = null, Closure|null $callback = null)
605
 * @method self|VideoObject videoObject(string|Closure|null $identifier = null, Closure|null $callback = null)
606
 * @method self|ViewAction viewAction(string|Closure|null $identifier = null, Closure|null $callback = null)
607
 * @method self|VisualArtsEvent visualArtsEvent(string|Closure|null $identifier = null, Closure|null $callback = null)
608
 * @method self|VisualArtwork visualArtwork(string|Closure|null $identifier = null, Closure|null $callback = null)
609
 * @method self|Volcano volcano(string|Closure|null $identifier = null, Closure|null $callback = null)
610
 * @method self|VoteAction voteAction(string|Closure|null $identifier = null, Closure|null $callback = null)
611
 * @method self|WPAdBlock wPAdBlock(string|Closure|null $identifier = null, Closure|null $callback = null)
612
 * @method self|WPFooter wPFooter(string|Closure|null $identifier = null, Closure|null $callback = null)
613
 * @method self|WPHeader wPHeader(string|Closure|null $identifier = null, Closure|null $callback = null)
614
 * @method self|WPSideBar wPSideBar(string|Closure|null $identifier = null, Closure|null $callback = null)
615
 * @method self|WantAction wantAction(string|Closure|null $identifier = null, Closure|null $callback = null)
616
 * @method self|WarrantyPromise warrantyPromise(string|Closure|null $identifier = null, Closure|null $callback = null)
617
 * @method self|WarrantyScope warrantyScope(string|Closure|null $identifier = null, Closure|null $callback = null)
618
 * @method self|WatchAction watchAction(string|Closure|null $identifier = null, Closure|null $callback = null)
619
 * @method self|Waterfall waterfall(string|Closure|null $identifier = null, Closure|null $callback = null)
620
 * @method self|WearAction wearAction(string|Closure|null $identifier = null, Closure|null $callback = null)
621
 * @method self|WebApplication webApplication(string|Closure|null $identifier = null, Closure|null $callback = null)
622
 * @method self|WebPage webPage(string|Closure|null $identifier = null, Closure|null $callback = null)
623
 * @method self|WebPageElement webPageElement(string|Closure|null $identifier = null, Closure|null $callback = null)
624
 * @method self|WebSite webSite(string|Closure|null $identifier = null, Closure|null $callback = null)
625
 * @method self|WholesaleStore wholesaleStore(string|Closure|null $identifier = null, Closure|null $callback = null)
626
 * @method self|WinAction winAction(string|Closure|null $identifier = null, Closure|null $callback = null)
627
 * @method self|Winery winery(string|Closure|null $identifier = null, Closure|null $callback = null)
628
 * @method self|WorkersUnion workersUnion(string|Closure|null $identifier = null, Closure|null $callback = null)
629
 * @method self|WriteAction writeAction(string|Closure|null $identifier = null, Closure|null $callback = null)
630
 * @method self|Zoo zoo(string|Closure|null $identifier = null, Closure|null $callback = null)
631
 */
632
class Graph implements Type, ArrayAccess, JsonSerializable
633
{
634
    public const IDENTIFIER_DEFAULT = 'default';
635
636
    /** @var array */
637
    protected $nodes = [];
638
639
    /** @var array */
640
    protected $hidden = [];
641
642
    /**
643
     * This overloads all \Spatie\SchemaOrg\Schema construction methods.
644
     * You can call them the same like on the \Spatie\SchemaOrg\Schema class.
645
     * But you can also use the extended signatures.
646
     *
647
     * Graph::organisation(): Organisation
648
     * Graph::organisation('spatie'): Organisation
649
     * Graph::organisation(function(Organisation $organisation, Graph $graph) {}): Graph
650
     * Graph::organisation('spatie', function(Organisation $organisation, Graph $graph) {}): Graph
651
     *
652
     * @see \Spatie\SchemaOrg\Schema
653
     *
654
     * @param string $method
655
     * @param array $arguments
656
     *
657
     * @return $this|Type
658
     *
659
     * @throws \ReflectionException
660
     * @throws \BadMethodCallException
661
     */
662
    public function __call(string $method, array $arguments)
663
    {
664
        if (is_callable([Schema::class, $method])) {
665
            $type = (new ReflectionClass(Schema::class))->getMethod($method)->getReturnType();
666
667
            if (! $type instanceof ReflectionNamedType) {
0 ignored issues
show
Bug introduced by
The class ReflectionNamedType does not exist. Is this class maybe located in a folder that is not analyzed, or in a newer version of your dependencies than listed in your composer.lock/composer.json?
Loading history...
668
                throw new BadMethodCallException(sprintf('The method "%s" has an invalid return type which does not resolve to "%s".', $method, ReflectionNamedType::class));
669
            }
670
671
            $identifier = self::IDENTIFIER_DEFAULT;
672
673
            if (isset($arguments[0])) {
674
                if (is_string($arguments[0])) {
675
                    $identifier = $arguments[0];
676
677
                    if (isset($arguments[1]) && is_callable($arguments[1])) {
678
                        $callback = $arguments[1];
679
                    }
680
                } elseif (is_callable($arguments[0])) {
681
                    $callback = $arguments[0];
682
                }
683
            }
684
685
            $schema = $this->getOrCreate($type->getName(), $identifier);
686
687
            if (isset($callback)) {
688
                call_user_func($callback, $schema, $this);
689
690
                return $this;
691
            }
692
693
            return $schema;
694
        }
695
696
        throw new BadMethodCallException(sprintf('The method "%s" does not exist on class "%s".', $method, get_class($this)));
697
    }
698
699
    public function if(bool $condition, Closure $callback)
700
    {
701
        if ($condition) {
702
            $callback($this);
703
        }
704
705
        return $this;
706
    }
707
708
    public function add(Type $schema, string $identifier = self::IDENTIFIER_DEFAULT): self
709
    {
710
        $type = get_class($schema);
711
712
        if ($this->has($type, $identifier)) {
713
            throw new TypeAlreadyInGraph(sprintf('The graph already has an item of type "%s" with identifier "%s".', $type, $identifier));
714
        }
715
716
        return $this->set($schema, $identifier);
717
    }
718
719
    public function has(string $type, string $identifier = self::IDENTIFIER_DEFAULT): bool
720
    {
721
        return array_key_exists($type, $this->nodes) && array_key_exists($identifier, $this->nodes[$type]);
722
    }
723
724
    public function set(Type $schema, string $identifier = self::IDENTIFIER_DEFAULT)
725
    {
726
        $this->nodes[get_class($schema)][$identifier] = $schema;
727
728
        return $this;
729
    }
730
731
    public function get(string $type, string $identifier = self::IDENTIFIER_DEFAULT): Type
732
    {
733
        if (! $this->has($type, $identifier)) {
734
            throw new TypeNotInGraph(sprintf('The graph does not have an item of type "%s" with identifier "%s".', $type, $identifier));
735
        }
736
737
        return $this->nodes[$type][$identifier];
738
    }
739
740
    public function getOrCreate(string $type, string $identifier = self::IDENTIFIER_DEFAULT): Type
741
    {
742
        if (! is_subclass_of($type, Type::class)) {
743
            throw new InvalidType(sprintf('The given type "%s" is not an instance of "%s".', $type, Type::class));
744
        }
745
746
        if (! $this->has($type, $identifier)) {
747
            $this->set(new $type(), $identifier);
748
        }
749
750
        return $this->get($type, $identifier);
751
    }
752
753
    public function hide(string $type, ?string $identifier = self::IDENTIFIER_DEFAULT): self
754
    {
755
        // hide all
756
        if ($identifier === null) {
757
            $this->hidden[$type] = true;
758
759
            return $this;
760
        }
761
762
        // hide single one if nothing configured
763
        if (! isset($this->hidden[$type])) {
764
            $this->hidden[$type][$identifier] = true;
765
766
            return $this;
767
        }
768
769
        // hide single one only if all are not already hidden
770
        if ($this->hidden[$type] !== true) {
771
            $this->hidden[$type][$identifier] = true;
772
773
            return $this;
774
        }
775
776
        return $this;
777
    }
778
779
    public function show(string $type, ?string $identifier = self::IDENTIFIER_DEFAULT): self
780
    {
781
        // show all
782
        if ($identifier === null) {
783
            $this->hidden[$type] = false;
784
785
            return $this;
786
        }
787
788
        // show single one if nothing configured
789
        if (! isset($this->hidden[$type])) {
790
            $this->hidden[$type][$identifier] = false;
791
792
            return $this;
793
        }
794
795
        // ignore if everything is shown
796
        if ($this->hidden[$type] === false) {
797
            return $this;
798
        }
799
800
        // show single one if identifier configuration exists
801
        if (is_array($this->hidden[$type])) {
802
            $this->hidden[$type][$identifier] = false;
803
804
            return $this;
805
        }
806
807
        if ($this->hidden[$type] === true) {
808
            $this->hidden[$type] = [];
809
810
            // keep everything hidden and show only single one
811
            if (isset($this->nodes[$type])) {
812
                foreach ($this->nodes[$type] as $id => $node) {
813
                    $this->hidden[$type][$id] = $id !== $identifier;
814
                }
815
816
                return $this;
817
            }
818
819
            // show single one if no nodes exist
820
            $this->hidden[$type][$identifier] = false;
821
822
            return $this;
823
        }
824
825
        return $this;
826
    }
827
828
    public function toArray(): array
829
    {
830
        $nodes = $this->getNodes();
831
832
        foreach ($this->hidden as $type => $hideAll) {
833
            if (is_bool($hideAll) && $hideAll) {
834
                unset($nodes[$type]);
835
836
                continue;
837
            }
838
839
            if (is_array($hideAll)) {
840
                foreach ($hideAll as $identifier => $hide) {
841
                    if (is_bool($hide) && $hide) {
842
                        unset($nodes[$type][$identifier]);
843
                    }
844
                }
845
            }
846
        }
847
848
        $nodes = array_reduce($nodes, function (array $carry, array $types) {
849
            return array_merge($carry, array_values($types));
850
        }, []);
851
852
        return [
853
            '@context' => $this->getContext(),
854
            '@graph' => $this->serializeNode(array_values($nodes)),
855
        ];
856
    }
857
858
    protected function serializeNode($node)
859
    {
860
        if (is_array($node)) {
861
            return array_map([$this, 'serializeNode'], array_values($node));
862
        }
863
864
        if ($node instanceof Type) {
865
            $node = $node->toArray();
866
            unset($node['@context']);
867
        }
868
869
        return $node;
870
    }
871
872
    public function getNodes(): array
873
    {
874
        return $this->nodes;
875
    }
876
877
    public function getContext(): string
878
    {
879
        return 'https://schema.org';
880
    }
881
882
    public function toScript(): string
883
    {
884
        return '<script type="application/ld+json">'.json_encode($this, JSON_UNESCAPED_UNICODE).'</script>';
885
    }
886
887
    public function jsonSerialize()
888
    {
889
        return $this->toArray();
890
    }
891
892
    public function __toString(): string
893
    {
894
        return $this->toScript();
895
    }
896
897
    protected function getTypeAndIdentifier(string $key): array
898
    {
899
        if (strpos($key, '.') === false) {
900
            return [$key, self::IDENTIFIER_DEFAULT];
901
        }
902
903
        return explode('.', $key);
904
    }
905
906
    public function offsetExists($offset)
907
    {
908
        [$type, $identifier] = $this->getTypeAndIdentifier($offset);
0 ignored issues
show
Bug introduced by
The variable $type does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $identifier does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
909
910
        return $this->has($type, $identifier);
911
    }
912
913
    public function offsetGet($offset)
914
    {
915
        [$type, $identifier] = $this->getTypeAndIdentifier($offset);
0 ignored issues
show
Bug introduced by
The variable $type does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $identifier does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
916
917
        return $this->get($type, $identifier);
918
    }
919
920
    public function offsetSet($offset, $value)
921
    {
922
        $identifier = $offset;
923
924
        if (strpos($offset, '.') !== false) {
925
            [$type, $identifier] = $this->getTypeAndIdentifier($offset);
0 ignored issues
show
Bug introduced by
The variable $type does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
926
        }
927
928
        $this->set($value, $identifier);
929
    }
930
931
    public function offsetUnset($offset)
932
    {
933
        [$type, $identifier] = $this->getTypeAndIdentifier($offset);
0 ignored issues
show
Bug introduced by
The variable $type does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
Bug introduced by
The variable $identifier does not exist. Did you forget to declare it?

This check marks access to variables or properties that have not been declared yet. While PHP has no explicit notion of declaring a variable, accessing it before a value is assigned to it is most likely a bug.

Loading history...
934
935
        unset($this->nodes[$type][$identifier]);
936
    }
937
}
938