src/common/ṔropertyTrait.php
protected function __propertyTraitHasProperty($propertyName)
    {
        // Check if getter or setter method exists
        if (method_exists($this, 'get'.$propertyName) || method_exists($this, 'set'.$propertyName)) {
            return true;
        }
        // Check if property is public
        try
        {
            $classReflection = new \ReflectionProperty(get_class($this), $propertyName);
            return $classReflection->isPublic();
        } catch (\ReflectionException $ex) {
            return false;
        }
    }
protected function __propertyTraitHasProperty($propertyName)
    {
        // Check if getter or setter method exists
        if (method_exists($this, 'get'.$propertyName) || method_exists($this, 'set'.$propertyName)) {
            return true;
        }
        // Check if property is public
        try
        {
            $classReflection = new \ReflectionProperty(get_class($this), $propertyName);
            return $classReflection->isPublic();
        } catch (\ReflectionException $ex) {
            return false;
        }
    }
Checks if the property exists

This function checks if a setter method and/or a getter method
is implemented for the property or the member variable is declared public

@param string $propertyName
@return bool