| Conditions | 1 |
| Paths | 1 |
| Total Lines | 98 |
| Code Lines | 68 |
| Lines | 0 |
| Ratio | 0 % |
| Changes | 0 | ||
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
| 1 | <?php |
||
| 168 | public static function create() |
||
| 169 | { |
||
| 170 | $metadata = new SimpleMetadataProvider('NorthWindEntities', 'NorthWind'); |
||
| 171 | |||
| 172 | //Register the complex type 'Address' having a property of same type. |
||
| 173 | $addressComplexType = $metadata->addComplexType(new ReflectionClass('Address'), 'Address', 'NorthWind', null); |
||
| 174 | $metadata->addPrimitiveProperty($addressComplexType, 'StreetName', EdmPrimitiveType::STRING); |
||
| 175 | $metadata->addPrimitiveProperty($addressComplexType, 'City', EdmPrimitiveType::STRING); |
||
| 176 | $metadata->addPrimitiveProperty($addressComplexType, 'Region', EdmPrimitiveType::STRING); |
||
| 177 | $metadata->addPrimitiveProperty($addressComplexType, 'PostalCode', EdmPrimitiveType::STRING); |
||
| 178 | $metadata->addPrimitiveProperty($addressComplexType, 'Country', EdmPrimitiveType::STRING); |
||
| 179 | //A complex sub property to hold alternate address |
||
| 180 | $metadata->addComplexProperty($addressComplexType, 'AltAddress', $addressComplexType); |
||
| 181 | |||
| 182 | //Register the entity (resource) type 'Customer' |
||
| 183 | $customersEntityType = $metadata->addEntityType(new ReflectionClass('Customer'), 'Customer', 'NorthWind'); |
||
| 184 | $metadata->addKeyProperty($customersEntityType, 'CustomerID', EdmPrimitiveType::STRING); |
||
| 185 | $metadata->addPrimitiveProperty($customersEntityType, 'CompanyName', EdmPrimitiveType::STRING); |
||
| 186 | $metadata->addPrimitiveProperty($customersEntityType, 'ContactName', EdmPrimitiveType::STRING); |
||
| 187 | $metadata->addPrimitiveProperty($customersEntityType, 'ContactTitle', EdmPrimitiveType::STRING); |
||
| 188 | $metadata->addPrimitiveProperty($customersEntityType, 'Phone', EdmPrimitiveType::STRING); |
||
| 189 | $metadata->addPrimitiveProperty($customersEntityType, 'Fax', EdmPrimitiveType::STRING); |
||
| 190 | $metadata->addComplexProperty($customersEntityType, 'Address', $addressComplexType); |
||
| 191 | //Add a bag property (bag of complex type) to hold array of other addresses |
||
| 192 | $metadata->addComplexProperty($customersEntityType, 'OtherAddresses', $addressComplexType, true); |
||
| 193 | //Add a bag property (bag of primitve type) to hold array of email addresses |
||
| 194 | $metadata->addPrimitiveProperty($customersEntityType, 'EmailAddresses', EdmPrimitiveType::STRING, true); |
||
| 195 | |||
| 196 | //Register the entity (resource) type 'Order' |
||
| 197 | $orderEntityType = $metadata->addEntityType(new ReflectionClass('Order'), 'Order', 'NorthWind'); |
||
| 198 | $metadata->addKeyProperty($orderEntityType, 'OrderID', EdmPrimitiveType::INT32); |
||
| 199 | $metadata->addPrimitiveProperty($orderEntityType, 'CustomerID', EdmPrimitiveType::STRING); |
||
| 200 | $metadata->addPrimitiveProperty($orderEntityType, 'EmployeeID', EdmPrimitiveType::INT32); |
||
| 201 | //Adding an etag property |
||
| 202 | $metadata->addETagProperty($orderEntityType, 'OrderDate', EdmPrimitiveType::DATETIME); |
||
| 203 | $metadata->addPrimitiveProperty($orderEntityType, 'RequiredDate', EdmPrimitiveType::DATETIME); |
||
| 204 | $metadata->addPrimitiveProperty($orderEntityType, 'ShippedDate', EdmPrimitiveType::DATETIME); |
||
| 205 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipVia', EdmPrimitiveType::INT32); |
||
| 206 | $metadata->addPrimitiveProperty($orderEntityType, 'Freight', EdmPrimitiveType::DECIMAL); |
||
| 207 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipName', EdmPrimitiveType::STRING); |
||
| 208 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipAddress', EdmPrimitiveType::STRING); |
||
| 209 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipCity', EdmPrimitiveType::STRING); |
||
| 210 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipRegion', EdmPrimitiveType::STRING); |
||
| 211 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipPostalCode', EdmPrimitiveType::STRING); |
||
| 212 | $metadata->addPrimitiveProperty($orderEntityType, 'ShipCountry', EdmPrimitiveType::STRING); |
||
| 213 | |||
| 214 | //Register the entity (resource) type 'Order_Details' |
||
| 215 | $orderDetailsEntityType = $metadata->addEntityType(new ReflectionClass('Order_Details'), 'Order_Details', 'NorthWind'); |
||
| 216 | $metadata->addKeyProperty($orderDetailsEntityType, 'ProductID', EdmPrimitiveType::INT32); |
||
| 217 | $metadata->addKeyProperty($orderDetailsEntityType, 'OrderID', EdmPrimitiveType::INT32); |
||
| 218 | $metadata->addPrimitiveProperty($orderDetailsEntityType, 'UnitPrice', EdmPrimitiveType::DECIMAL); |
||
| 219 | $metadata->addPrimitiveProperty($orderDetailsEntityType, 'Quantity', EdmPrimitiveType::INT16); |
||
| 220 | $metadata->addPrimitiveProperty($orderDetailsEntityType, 'Discount', EdmPrimitiveType::SINGLE); |
||
| 221 | |||
| 222 | //Register the entity (resource) type 'Employee' |
||
| 223 | $employeeEntityType = $metadata->addEntityType(new ReflectionClass('Employee'), 'Employee', 'NorthWind'); |
||
| 224 | $metadata->addKeyProperty($employeeEntityType, 'EmployeeID', EdmPrimitiveType::INT32); |
||
| 225 | $metadata->addPrimitiveProperty($employeeEntityType, 'FirstName', EdmPrimitiveType::STRING); |
||
| 226 | $metadata->addPrimitiveProperty($employeeEntityType, 'LastName', EdmPrimitiveType::STRING); |
||
| 227 | $metadata->addPrimitiveProperty($employeeEntityType, 'Title', EdmPrimitiveType::STRING); |
||
| 228 | $metadata->addPrimitiveProperty($employeeEntityType, 'TitleOfCourtesy', EdmPrimitiveType::STRING); |
||
| 229 | $metadata->addPrimitiveProperty($employeeEntityType, 'BirthDate', EdmPrimitiveType::DATETIME); |
||
| 230 | $metadata->addPrimitiveProperty($employeeEntityType, 'HireDate', EdmPrimitiveType::DATETIME); |
||
| 231 | $metadata->addPrimitiveProperty($employeeEntityType, 'Address', EdmPrimitiveType::STRING); |
||
| 232 | $metadata->addPrimitiveProperty($employeeEntityType, 'City', EdmPrimitiveType::STRING); |
||
| 233 | $metadata->addPrimitiveProperty($employeeEntityType, 'Region', EdmPrimitiveType::STRING); |
||
| 234 | $metadata->addPrimitiveProperty($employeeEntityType, 'PostalCode', EdmPrimitiveType::STRING); |
||
| 235 | $metadata->addPrimitiveProperty($employeeEntityType, 'Country', EdmPrimitiveType::STRING); |
||
| 236 | $metadata->addPrimitiveProperty($employeeEntityType, 'HomePhone', EdmPrimitiveType::STRING); |
||
| 237 | $metadata->addPrimitiveProperty($employeeEntityType, 'Extension', EdmPrimitiveType::STRING); |
||
| 238 | $metadata->addPrimitiveProperty($employeeEntityType, 'Notes', EdmPrimitiveType::STRING); |
||
| 239 | $metadata->addPrimitiveProperty($employeeEntityType, 'ReportsTo', EdmPrimitiveType::INT32); |
||
| 240 | //$metadata->addPrimitiveProperty($employeeEntityType, 'Photo', EdmPrimitiveType::BINARY); |
||
| 241 | $metadata->addPrimitiveProperty($employeeEntityType, 'Emails', EdmPrimitiveType::STRING, true); |
||
| 242 | $metadata->addPrimitiveProperty($employeeEntityType, 'PhotoPath', EdmPrimitiveType::STRING); |
||
| 243 | //Set Employee entity type as MLE thus the url http://host/NorthWind.svc/Employee(1875)/$value will give the stream associated with employee with id 1875 |
||
| 244 | $employeeEntityType->setMediaLinkEntry(true); |
||
|
|
|||
| 245 | //Add a named stream property to the employee entity type |
||
| 246 | //so the url http://host/NorthWind.svc/Employee(9831)/TumbNail_48X48 will give stream associated with employee's thumbnail (of size 48 x 48) image |
||
| 247 | //$streamInfo = new ResourceStreamInfo('TumbNail_48X48'); |
||
| 248 | //$employeeEntityType->addNamedStream($streamInfo); |
||
| 249 | |||
| 250 | $customersResourceSet = $metadata->addResourceSet('Customers', $customersEntityType); |
||
| 251 | $ordersResourceSet = $metadata->addResourceSet('Orders', $orderEntityType); |
||
| 252 | $orderDetialsResourceSet = $metadata->addResourceSet('Order_Details', $orderDetailsEntityType); |
||
| 253 | $employeeResourceSet = $metadata->addResourceSet('Employees', $employeeEntityType); |
||
| 254 | |||
| 255 | //Register the assoications (navigations) |
||
| 256 | //Customers (1) <==> Orders (0-*) |
||
| 257 | $metadata->addResourceSetReferenceProperty($customersEntityType, 'Orders', $ordersResourceSet); |
||
| 258 | $metadata->addResourceReferenceProperty($orderEntityType, 'Customer', $customersResourceSet); |
||
| 259 | |||
| 260 | //Register the assoications (navigations) |
||
| 261 | //Orders (1) <==> Orders_Details (0-*) |
||
| 262 | $metadata->addResourceReferenceProperty($orderDetailsEntityType, 'Order', $ordersResourceSet); |
||
| 263 | $metadata->addResourceSetReferenceProperty($orderEntityType, 'Order_Details', $orderDetialsResourceSet); |
||
| 264 | |||
| 265 | return $metadata; |
||
| 266 | } |
||
| 268 |