| | 430 | * MODEL_LOADING_AGRESSIVE |
| | 431 | * |
| | 432 | * Constant for agressive model loading |
| | 433 | * Will require_once() all found model files |
| | 434 | */ |
| | 435 | const MODEL_LOADING_AGRESSIVE = 1; |
| | 436 | |
| | 437 | /** |
| | 438 | * MODEL_LOADING_CONSERVATIVE |
| | 439 | * |
| | 440 | * Constant for conservative model loading |
| | 441 | * Will not require_once() found model files inititally instead it will build an array |
| | 442 | * and reference it in autoload() when a class is needed it will require_once() it |
| | 443 | */ |
| | 444 | const MODEL_LOADING_CONSERVATIVE= 2; |
| | 445 | |
| | 446 | /** |
| 521 | | self::$_loadedModelFiles[] = array( |
| 522 | | 'filename' => $e[0], |
| 523 | | 'filepath' => $file->getPathName() |
| 524 | | ); |
| | 543 | |
| | 544 | if ($manager->getAttribute(Doctrine::ATTR_MODEL_LOADING) == Doctrine::MODEL_LOADING_CONSERVATIVE) { |
| | 545 | self::$_loadedModelFiles[$e[0]] = $file->getPathName(); |
| | 546 | $loadedModels[] = $e[0]; |
| | 547 | } else { |
| | 548 | $declaredBefore = get_declared_classes(); |
| | 549 | require_once($file->getPathName()); |
| | 550 | |
| | 551 | $declaredAfter = get_declared_classes(); |
| | 552 | // Using array_slice because array_diff is broken is some PHP versions |
| | 553 | $foundClasses = array_slice($declaredAfter, count($declaredBefore) - 1); |
| | 554 | if ($foundClasses) { |
| | 555 | foreach ($foundClasses as $className) { |
| | 556 | if (self::isValidModelClass($className) && !in_array($className, $loadedModels)) { |
| | 557 | $loadedModels[] = $className; |
| | 558 | } |
| | 559 | } |
| | 560 | } |
| | 561 | } |
| 528 | | |
| 529 | | $loadedModels = array(); |
| 530 | | |
| 531 | | $modelFiles = self::$_loadedModelFiles; |
| 532 | | |
| 533 | | foreach ($modelFiles as $key => $model) { |
| 534 | | $declaredBefore = get_declared_classes(); |
| 535 | | require_once $model['filepath']; |
| 536 | | $declaredAfter = get_declared_classes(); |
| 537 | | // Using array_slice because array_diff is broken is some PHP versions |
| 538 | | $foundClasses = array_slice($declaredAfter, count($declaredBefore) - 1); |
| 539 | | if ($foundClasses) { |
| 540 | | foreach ($foundClasses as $className) { |
| 541 | | if (self::isValidModelClass($className) && !in_array($className, $loadedModels)) { |
| 542 | | $loadedModels[] = $className; |
| 543 | | } |
| 544 | | } |
| 545 | | } |
| 546 | | |
| 547 | | } |