123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?php
- namespace Laravel\Tinker;
- use Exception;
- use Symfony\Component\VarDumper\Caster\Caster;
- class TinkerCaster
- {
- /**
- * Application methods to include in the presenter.
- *
- * @var array
- */
- private static $appProperties = [
- 'configurationIsCached',
- 'environment',
- 'environmentFile',
- 'isLocal',
- 'routesAreCached',
- 'runningUnitTests',
- 'version',
- 'path',
- 'basePath',
- 'configPath',
- 'databasePath',
- 'langPath',
- 'publicPath',
- 'storagePath',
- 'bootstrapPath',
- ];
- /**
- * Get an array representing the properties of an application.
- *
- * @param \Illuminate\Foundation\Application $app
- * @return array
- */
- public static function castApplication($app)
- {
- $results = [];
- foreach (self::$appProperties as $property) {
- try {
- $val = $app->$property();
- if (! is_null($val)) {
- $results[Caster::PREFIX_VIRTUAL.$property] = $val;
- }
- } catch (Exception $e) {
- //
- }
- }
- return $results;
- }
- /**
- * Get an array representing the properties of a collection.
- *
- * @param \Illuminate\Support\Collection $collection
- * @return array
- */
- public static function castCollection($collection)
- {
- return [
- Caster::PREFIX_VIRTUAL.'all' => $collection->all(),
- ];
- }
- /**
- * Get an array representing the properties of a model.
- *
- * @param \Illuminate\Database\Eloquent\Model $model
- * @return array
- */
- public static function castModel($model)
- {
- $attributes = array_merge(
- $model->getAttributes(), $model->getRelations()
- );
- $visible = array_flip(
- $model->getVisible() ?: array_diff(array_keys($attributes), $model->getHidden())
- );
- $results = [];
- foreach (array_intersect_key($attributes, $visible) as $key => $value) {
- $results[(isset($visible[$key]) ? Caster::PREFIX_VIRTUAL : Caster::PREFIX_PROTECTED).$key] = $value;
- }
- return $results;
- }
- }
|