/** * Prepare static variables before processing a {@link get_static} or {@link set_static} * call. */ private static function prepare_statics($class) { // _cache_statics_prepared setting must come first to prevent infinite loops when we call // get_static below self::$_cache_statics_prepared[$class] = true; // load statics now for DataObject classes if (is_subclass_of($class, 'DataObject')) { $extensions = Object::uninherited_static($class, 'extensions'); if ($extensions) { foreach ($extensions as $extension) { $extensionClass = $extension; if (preg_match('/^([^(]*)/', $extension, $matches)) { $extensionClass = $matches[1]; } if (is_subclass_of($extensionClass, 'DataExtension')) { DataExtension::load_extra_statics($class, $extension); } else { user_error("{$extensionClass} cannot be applied to {$class} without being a DataExtension", E_USER_ERROR); } } } } }