Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00015 final class ContainerClassBuilder extends OnceBuilder
00016 {
00017 public static function build(MetaClass $class)
00018 {
00019 throw new UnsupportedMethodException();
00020 }
00021
00022 public static function buildContainer(
00023 MetaClass $class, MetaClassProperty $holder
00024 )
00025 {
00026 $out = self::getHead();
00027
00028 $containerName = $class->getName().ucfirst($holder->getName()).'DAO';
00029
00030 $out .=
00031 'final class '
00032 .$containerName
00033 .' extends '
00034 .$holder->getRelation()->toString().'Linked'
00035 ."\n{\n";
00036
00037 $className = $class->getName();
00038 $propertyName = strtolower($className[0]).substr($className, 1);
00039
00040 $remoteColumnName = $holder->getType()->getClass()->getTableName();
00041
00042 $out .= <<<EOT
00043 public function __construct({$className} \${$propertyName}, \$lazy = false)
00044 {
00045 parent::__construct(
00046 \${$propertyName},
00047 {$holder->getType()->getClassName()}::dao(),
00048 \$lazy
00049 );
00050 }
00051
00055 public static function create({$className} \${$propertyName}, \$lazy = false)
00056 {
00057 return new self(\${$propertyName}, \$lazy);
00058 }
00059
00060 EOT;
00061
00062 if ($holder->getRelation()->getId() == MetaRelation::MANY_TO_MANY) {
00063 $out .= <<<EOT
00064
00065 public function getHelperTable()
00066 {
00067 return '{$class->getTableName()}_{$remoteColumnName}';
00068 }
00069
00070 public function getChildIdField()
00071 {
00072 return '{$remoteColumnName}_id';
00073 }
00074
00075 EOT;
00076 }
00077
00078 $out .= <<<EOT
00079
00080 public function getParentIdField()
00081 {
00082 return '{$class->getTableName()}_id';
00083 }
00084
00085 EOT;
00086
00087
00088 $out .= "}\n";
00089 $out .= self::getHeel();
00090
00091 return $out;
00092 }
00093 }
00094 ?>