From 7770c298450237e092d6d801fd547609ba2db230 Mon Sep 17 00:00:00 2001 From: xue <> Date: Mon, 13 Mar 2006 02:38:47 +0000 Subject: TDataFieldAccessor can access public member variables now. Added implementation to cope with low PHP versions. --- framework/core.php | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) (limited to 'framework/core.php') diff --git a/framework/core.php b/framework/core.php index bac24ca2..56fe12e7 100644 --- a/framework/core.php +++ b/framework/core.php @@ -883,4 +883,84 @@ class TTextWriter extends TComponent implements ITextWriter } } +if(version_compare(phpversion(),'5.1.0','>=')) +{ + /** + * TReflectionClass class. + * This class is written to cope with the incompatibility between different PHP versions. + * It is equivalent to ReflectionClass if PHP version >= 5.1.0 + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System + * @since 3.0 + */ + class TReflectionClass extends ReflectionClass + { + } +} +else // PHP < 5.1.0 +{ + /** + * TReflectionClass class. + * This class is written to cope with the incompatibility between different PHP versions. + * It mainly provides a way to detect if a method exists for a given class name. + * + * @author Qiang Xue + * @version $Revision: $ $Date: $ + * @package System + * @since 3.0 + */ + class TReflectionClass extends ReflectionClass + { + /** + * @param string method name + * @return boolean whether the method exists + */ + public function hasMethod($method) + { + try + { + return $this->getMethod($method)!==null; + } + catch(Exception $e) + { + return false; + } + } + + /** + * @param string property name + * @return boolean whether the property exists + */ + public function hasProperty($property) + { + try + { + return $this->getProperty($property)!==null; + } + catch(Exception $e) + { + return false; + } + } + } + + if(!function_exists('property_exists')) + { + /** + * Detects whether an object contains the specified member variable. + * @param object + * @param string member variable (property) name + * @return boolean + */ + function property_exists($object, $property) + { + if(is_object($object)) + return array_key_exists($property, get_object_vars($object)); + else + return false; + } + } +} + ?> \ No newline at end of file -- cgit v1.2.3