The definitions are used to indicate internally in the extensions which classes are going to be generated and how they will be.
The classes are defined with the class Mandango\Mondator\Definition\Definition:
use Mandango\Mondator\Definition\Definition;
// constructor: class
$definition = new Definition($class);
// class
$definition->setClass('Model\Article');
$class = $definition->getClass();
// namespace (only return) (null if it doesn't have)
$namespace = $definition->getNamespace();
// classname (only return)
$className = $definition->getClassName();
// parent class (full class)
$definition->setParentClass('\Model\Base\Article');
$parentClass $definition->getParentClass();
// interfaces
$definition->addInterface('\ArrayAccess');
$interfaces = $definition->getInterfaces();
// abstract
$definition->setIsAbstract(true);
$isAbstract = $definition->getIsAbstract();
// DocComment
$definition->setDocComment(<<<EOF
/**
* Article Document.
*/
EOF
);
$docComment = $definition->getDocComment();
The methods use the class MandangoMondatorDefinitionMethod:
use Mandango\Mondator\Definition\Method;
// constructor: visibility, name, arguments, code
$method = new Method('public', 'myMethod', '$var1, $var2', <<<EOF
return \$var1 + \$var2;
EOF
);
// visibility
$method->setVisibility('protected');
$visibility = $method->getVisibility();
// name
$method->setName('mySumMethod');
$name = $method->getName();
// arguments
$method->setArguments('$sum1, $sum2');
$arguments = $method->getArguments();
// code
$method->setCode(<<<EOF
return \$sum1 + \$sum2;
EOF
);
$code = $method->getCode();
// static
$method->setIsStatic(true);
$isStatic = $method->getIsStatic();
// abstract
$method->setIsAbstract(true);
$isAbstract = $method->getIsAbstract();
// docComment
$method->setDocComment(<<<EOF
/**
* Sum two numbers.
*
* @param mixed $sum1 The Sum1.
* @param mixed $sum2 The Sum2.
*
* @return mixed The result.
*/
EOF
);
$docComment = $method->getDocComment();
The methods are assigned to the definitions:
// assign one
$definition->addMethod($method);
// replace (deletes all that existed previously)
$definition->setMethods(array($method1, $method2));
// return all
$methods = $definition->getMethods();
The properties use the class MandangoMondatorDefinitionProperty:
use Mandango\Mondator\Definition\Property;
// constructor: visibility, name, value
$property = new Property('public', 'myProperty', 'value');
// visibility
$property->setVisibility('protected');
$visibility = $property->getVisibility();
// name
$property->setName('myCustomProperty');
$name = $property->getName();
// value
$property->setValue('someValue');
$value = $property->getValue();
// static
$property->setIsStatic(true);
$isStatic = $property->getIsStatic();
// docComment
$property->setDocComment(<<<EOF
/**
* MyCustomProperty.
*/
EOF
);
$docComment = $property->getDocComment();
The properties are assigned also to the definitions:
// assign one
$definition->addProperty($property);
// replace (deletes all that existed previously)
$definition->setProperties(array($property1, $property2));
// return all
$properties = $definition->getProperties();