QR_code_generator/app/Services/ModelPropertyParser.php

24 lines
847 B
PHP

<?php
namespace App\Services;
use Illuminate\Database\Eloquent\Model;
abstract class ModelPropertyParser {
//todo parse multiple property values
public static function parse(Model $model, $prop) {
$result = null;
collect(explode('->', $prop))->each(function($prop) use($model, &$result) {
$func = $params = null;
if (strpos($prop, '(')) {
list($func, $params) = explode('(', $prop);
$params = trim($params, '()"') ?: null;
}
if ($result && is_object($result)) $result = $func ? ($params ? $result->$func($params) : $result->$func()) : $result->$prop;
else $result = $func ? ($params ? $model->$func($params) : $model->$func()) : $model->$prop;
if (!$result) return false;
});
return $result;
}
}