示例#1
0
 /**
  * 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);
                 }
             }
         }
     }
 }