Esempio n. 1
0
 /**
  * Gets a nested value from an object
  *
  * @param string $pattern
  * @param mixed  $object
  * @param mixed  $default
  * @return mixed|null
  */
 public function getNestedItem($pattern, $object, $default = null)
 {
     $parts = explode("/", $pattern);
     $lastObject = $object;
     $nr = 0;
     $totalParts = count($parts);
     $item = null;
     foreach ($parts as $part) {
         $item = null;
         $nr++;
         $found = false;
         if ($part == '') {
             return $default;
         }
         try {
             if (is_object($lastObject)) {
                 $mthd = 'get' . ucfirst($part);
                 $mthdIs = 'is' . ucfirst($part);
                 if (substr($part, 0, 2) == '::') {
                     $reflect = new \ReflectionObject($lastObject);
                     $props = $reflect->getStaticProperties();
                     $nm = substr($part, 2);
                     if (isset($props[$nm])) {
                         $prop = $reflect->getProperty($nm);
                         if ($prop->isPublic()) {
                             $item = $lastObject::${$nm};
                         }
                     }
                 } elseif (is_callable([$lastObject, $mthd])) {
                     $item = $lastObject->{$mthd}();
                 } elseif (is_callable([$lastObject, $mthdIs])) {
                     $item = $lastObject->{$mthdIs}();
                 } elseif (is_callable([$lastObject, $part])) {
                     $item = $lastObject->{$part}();
                 } else {
                     $reflect = new \ReflectionObject($lastObject);
                     $prop = $reflect->getProperty($part);
                     if ($prop->isPublic()) {
                         $item = $lastObject->{$part};
                     }
                 }
                 $found = true;
             } elseif (is_array($lastObject)) {
                 if (array_key_exists($part, $lastObject)) {
                     $item = $lastObject[$part];
                     $found = true;
                 }
             }
         } catch (\Exception $e) {
             return $default;
         }
         if (!is_null($item) && !is_object($item) && !is_array($item) && $nr < $totalParts || !$found) {
             //its a string,boolean or integer , but we're not at the end of the list so we can't find the end
             return $default;
         }
         $lastObject = $item;
     }
     return $item;
 }
Esempio n. 2
0
 /**
  * @return array assoc
  */
 public function toArray()
 {
     $ref = new \ReflectionObject($this);
     $props = $ref->getProperties(\ReflectionProperty::IS_PUBLIC);
     $static_props = $ref->getStaticProperties();
     if (empty($static_props) === false) {
         $static_props = array_keys($static_props);
     }
     $arr = [];
     foreach ($props as $prop) {
         $key = $prop->getName();
         if (in_array($key, $static_props)) {
             continue;
         }
         $arr[$key] = $prop->getValue($this);
     }
     return $arr;
 }
Esempio n. 3
0
<?php

/*
This is a page that displays all stores that the user has defined. It also provides the ability to add new stores or refresh the database tagging of transactions after a new store has been added.
*/
require_once "include_files.php";
$t = new db_cache_tag();
$rt = new ReflectionObject($t);
$tagList = $rt->getStaticProperties();
unset($t);
unset($rt);
$s = new db_cache_store();
$st = new ReflectionObject($s);
$storeList = $st->getStaticProperties();
unset($s);
unset($st);
?>
<!DOCTYPE html>
<html>
	<head>
		<script type="text/javascript" src="fusioncharts-suite/assets/scripts/jquery.min.js"></script>
		<script type="text/javascript" src="jquery-ui-1.11.0.custom/jquery-ui.min.js"></script>
		<link rel="stylesheet" type="text/css" href="jquery-ui-1.11.0.custom/jquery-ui.min.css">
		<script>
			$(function(){
				$( "#dialog-form" ).hide();
				
				//initialize form
				resetForm();
			});
			
Esempio n. 4
0
 /**
  * @param $param
  * @param \ReflectionObject $reflection
  */
 private function buildFromObject($param, $reflection = null)
 {
     foreach ($param as $key => $value) {
         $this->object['Object default'][$key] = $value;
     }
     // Get info on the object
     $this->object['Reflection']['In namespace'] = $reflection->inNamespace() ? 'Yes' : 'No';
     if ($reflection->inNamespace()) {
         $this->object['Class namespace'] = $reflection->getNamespaceName();
     }
     $this->object['Reflection']['Class name'] = $reflection->getName();
     $this->object['Reflection']['Is internal'] = $reflection->isInternal() ? 'Yes' : 'No';
     $this->object['Reflection']['Is iterable'] = $reflection->isIterateable() ? 'Yes' : 'No';
     $this->object['Reflection']['Is abstract'] = $reflection->isAbstract() ? 'Yes' : 'No';
     $this->object['Reflection']['Is final'] = $reflection->isFinal() ? 'Yes' : 'No';
     $this->object['Reflection']['Is user defined'] = $reflection->isUserDefined() ? 'Yes' : 'No';
     $this->object['Reflection']['Is instantiable'] = $reflection->isInstantiable() ? 'Yes' : 'No';
     $this->object['Reflection']['Is clonable'] = $reflection->isCloneable() ? 'Yes' : 'No';
     $this->object['Reflection']['Is interface'] = $reflection->isInterface() ? 'Yes' : 'No';
     $this->object['Reflection']['Class constants'] = !empty($reflection->getConstants()) ? $reflection->getConstants() : 'Class has no constants';
     $this->object['Reflection']['Class static properties'] = !empty($reflection->getStaticProperties()) ? $reflection->getStaticProperties() : 'Class has no static properties';
     $this->object['Reflection']['Class default properties'] = !empty($reflection->getDefaultProperties()) ? $reflection->getDefaultProperties() : 'Class has no default properties';
     if (null === $reflection->getConstructor()) {
         $this->object['Reflection']['Class construct'] = 'Class has no construct.';
     } else {
         $this->object['Reflection']['Class construct'] = $reflection->getConstructor();
     }
     $this->object['Reflection']['Class interfaces'] = !empty($reflection->getInterfaces()) ? $reflection->getInterfaces() : 'Class implements no interfaces';
     $this->object['Reflection']['Class traits'] = !empty($reflection->getTraits()) ? $reflection->getTraits() : 'Class has no traits';
     $this->object['Reflection']['Class parent'] = $reflection->getParentClass() !== false ? $reflection->getParentClass() : 'Class has no parent';
     if (false === $reflection->getFileName()) {
         $this->object['Reflection']['Defined in'] = 'Class is internal, no definition to provide.';
     } else {
         $this->object['Reflection']['Defined in'] = $reflection->getFileName();
     }
     if (false === $reflection->getFileName()) {
         $this->object['Reflection']['Start line'] = 'Class is internal, no start line to provide.';
     } else {
         $this->object['Reflection']['Start line'] = $reflection->getFileName();
     }
     if (false === $reflection->getEndLine()) {
         $this->object['Reflection']['End line'] = 'Class is internal, no end line to provide.';
     } else {
         $this->object['Reflection']['End line'] = $reflection->getEndLine();
     }
     if (false === $reflection->getDocComment()) {
         $this->object['Reflection']['Doc comments'] = 'No documents to provide.';
     } else {
         $this->object['Reflection']['Doc comments'] = $reflection->getDocComment();
     }
     // End get info
     $this->html .= "<span class=\"js-parent-object\">";
     if (!empty($this->object['Object default'])) {
         $this->html .= "<div class=\"js-object-default-tab \"><button class=\"button-reflection button\">Show reflection</button></div>";
         $this->html .= "<div class=\"js-object-default \">";
         $this->buildFromObjectIterationInformationRecursive($this->object['Object default']);
         $this->html .= "</div>";
     }
     if ($param instanceof \Closure) {
         $this->html .= "<div class=\"js-object-default-tab \"><button class=\"button-reflection button\">Show reflection</button></div>";
         $this->html .= "<div class=\"js-object-default \">";
         $this->html .= "<span class=\"css-type-string\">Nothing here...</span>";
         $this->html .= "</div>";
     }
     $this->html .= "<div class=\"js-object-reflection-tab hide\"><button class=\"button-class-default button\">Show default</button></div>";
     $this->html .= "<div class=\"js-object-reflection hide\">";
     $this->buildFromObjectReflectionInformationRecursive($this->object['Reflection']);
     $this->html .= "</div>";
     $this->html .= "</span>";
     $this->object = [];
 }