Permalink
Browse files

remove baseObject, Persitent Interface, add ActiveRecordInterface, fi…

…x use, comment of BaseObject
  • Loading branch information...
1 parent a01179c commit 294af8395643f123049979569d764b37b010d90a @jaugustin jaugustin committed with willdurand Jul 28, 2012
View
11 src/Propel/Generator/Builder/Om/AbstractObjectBuilder.php
@@ -110,7 +110,7 @@ protected function addColumnMutatorMethods(&$script)
/**
* Gets the baseClass path if specified for table/db.
- * If not, will return 'propel.om.BaseObject'
+ *
* @return string
*/
protected function getBaseClass()
@@ -120,17 +120,12 @@ protected function getBaseClass()
/**
* Gets the interface path if specified for current table.
- * If not, will return 'propel.om.Persistent'.
+ *
* @return string
*/
protected function getInterface()
{
- $interface = $this->getTable()->getInterface();
- if (null === $interface && !$this->getTable()->isReadOnly()) {
- $interface = 'propel.om.Persistent';
- }
-
- return $interface;
+ return $this->getTable()->getInterface();
}
/**
View
17 src/Propel/Generator/Builder/Om/ClassTools.php
@@ -97,31 +97,22 @@ public static function getBasePeer(Table $table)
/**
* Gets the baseClass path if specified for table/db.
- * If not, will return 'propel.om.BaseObject'
+ *
* @return string
*/
public static function getBaseClass(Table $table)
{
- if (null === $class = $table->getBaseClass()) {
- $class = 'propel.om.BaseObject';
- }
-
- return $class;
+ return $table->getBaseClass();
}
/**
* Gets the interface path if specified for table.
- * If not, will return 'propel.om.Persistent'.
+ *
* @return string
*/
public static function getInterface(Table $table)
{
- $interface = $table->getInterface();
- if (null === $interface && !$table->isReadOnly()) {
- $interface = 'propel.om.Persistent';
- }
-
- return $interface;
+ return $table->getInterface();
}
/**
View
16 src/Propel/Generator/Builder/Om/ObjectBuilder.php
@@ -223,10 +223,10 @@ protected function addClassOpen(&$script)
}
$script .= "
*/
-abstract class ".$this->getUnqualifiedClassName().$parentClass." ";
+abstract class ".$this->getUnqualifiedClassName().$parentClass." implements ActiveRecordInterface ";
- if ($interface = $this->getTable()->getInterface()) {
- $script .= "implements Child" . ClassTools::classname($interface);
+ if ($interface = $this->getInterface()) {
+ $script .= ", Child" . ClassTools::classname($interface);
if ($interface !== ClassTools::classname($interface)) {
$this->declareClass($interface);
} else {
@@ -261,8 +261,7 @@ protected function addClassBody(&$script)
'\Propel\Runtime\Exception\BadMethodCallException',
'\Propel\Runtime\Exception\PropelException',
'\Propel\Runtime\Query\Criteria',
- '\Propel\Runtime\Om\BaseObject',
- '\Propel\Runtime\Om\Persistent',
+ '\Propel\Runtime\Om\ActiveRecordInterface',
'\Propel\Runtime\Parser\AbstractParser',
'\Propel\Runtime\Propel',
'\Propel\Runtime\Util\BasePeer'
@@ -704,7 +703,7 @@ protected function addConstructorClose(&$script)
*/
protected function addBaseObjectMethods(&$script)
{
- $script .= $this->renderTemplate('baseObjectMethods');
+ $script .= $this->renderTemplate('baseObjectMethods', array('className' => $this->getObjectClassName()));
}
/**
@@ -2574,15 +2573,16 @@ protected function addDelete(&$script)
**/
protected function addDeleteComment(&$script)
{
+ $className = $this->getObjectClassName();
$script .= "
/**
* Removes this object from datastore and sets delete attribute.
*
* @param ConnectionInterface \$con
* @return void
* @throws PropelException
- * @see BaseObject::setDeleted()
- * @see BaseObject::isDeleted()
+ * @see $className::setDeleted()
+ * @see $className::isDeleted()
*/";
}
View
10 src/Propel/Generator/Builder/Om/templates/baseObjectMethods.php
@@ -88,9 +88,9 @@ public function resetModified($col = null)
}
/**
- * Compares this with another <code>BaseObject</code> instance. If
- * <code>obj</code> is an instance of <code>BaseObject</code>, delegates to
- * <code>equals(BaseObject)</code>. Otherwise, returns <code>false</code>.
+ * Compares this with another <code><?php echo $className ?></code> instance. If
+ * <code>obj</code> is an instance of <code><?php echo $className ?></code>, delegates to
+ * <code>equals(<?php echo $className ?>)</code>. Otherwise, returns <code>false</code>.
*
* @param obj The object to compare to.
* @return Whether equal to the object specified.
@@ -172,7 +172,7 @@ public function getVirtualColumn($name)
* @param string $name The virtual column name
* @param mixed $value The value to give to the virtual column
*
- * @return BaseObject The current object, for fluid interface
+ * @return <?php echo $className ?> The current object, for fluid interface
*/
public function setVirtualColumn($name, $value)
{
@@ -204,7 +204,7 @@ protected function log($msg, $priority = Propel::LOG_INFO)
* or a format name ('XML', 'YAML', 'JSON', 'CSV')
* @param string $data The source data to import from
*
- * @return BaseObject The current object, for fluid interface
+ * @return <?php echo $className ?> The current object, for fluid interface
*/
public function importFrom($parser, $data)
{
View
1 src/Propel/Runtime/Collection/Collection.php
@@ -17,7 +17,6 @@
use Propel\Runtime\Exception\BadMethodCallException;
use Propel\Runtime\Exception\UnexpectedValueException;
use Propel\Runtime\Formatter\AbstractFormatter;
-use Propel\Runtime\Om\BaseObject;
use Propel\Runtime\Parser\AbstractParser;
use Propel\Runtime\Util\BasePeer;
View
23 src/Propel/Runtime/Om/ActiveRecordInterface.php
@@ -0,0 +1,23 @@
+<?php
+
+/**
+ * This file is part of the Propel package.
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @license MIT License
+ */
+
+namespace Propel\Runtime\Om;
+
+use Propel\Runtime\Connection\ConnectionInterface;
+
+/**
+ * This ActiveRecord interface help to find Propel Object
+ *
+ * @author jaugustin
+ */
+interface ActiveRecordInterface
+{
+
+}
View
435 src/Propel/Runtime/Om/BaseObject.php
@@ -1,435 +0,0 @@
-<?php
-
-/**
- * This file is part of the Propel package.
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @license MIT License
- */
-
-namespace Propel\Runtime\Om;
-
-use Propel\Runtime\Connection\ConnectionInterface;
-use Propel\Runtime\Exception\BadMethodCallException;
-use Propel\Runtime\Exception\PropelException;
-use Propel\Runtime\Parser\AbstractParser;
-use Propel\Runtime\Util\BasePeer;
-
-/**
- * This class contains attributes and methods that are used by all
- * business objects within the system.
- *
- * @method BaseObject fromXML(string $data) Populate the object from an XML string
- * @method BaseObject fromYAML(string $data) Populate the object from a YAML string
- * @method BaseObject fromJSON(string $data) Populate the object from a JSON string
- * @method BaseObject fromCSV(string $data) Populate the object from a CSV string
- * @method string toXML(boolean $includeLazyLoadColumns) Export the object to an XML string
- * @method string toYAML(boolean $includeLazyLoadColumns) Export the object to a YAML string
- * @method string toJSON(boolean $includeLazyLoadColumns) Export the object to a JSON string
- * @method string toCSV(boolean $includeLazyLoadColumns) Export the object to a CSV string
- *
- * @author Hans Lellelid <hans@xmpl.org> (Propel)
- * @author Frank Y. Kim <frank.kim@clearink.com> (Torque)
- * @author John D. McNally <jmcnally@collab.net> (Torque)
- */
-abstract class BaseObject
-{
- /**
- * attribute to determine if this object has previously been saved.
- * @var boolean
- */
- protected $new = true;
-
- /**
- * attribute to determine whether this object has been deleted.
- * @var boolean
- */
- protected $deleted = false;
-
- /**
- * The columns that have been modified in current object.
- * Tracking modified columns allows us to only update modified columns.
- * @var array
- */
- protected $modifiedColumns = array();
-
- /**
- * The (virtual) columns that are added at runtime
- * The formatters can add supplementary columns based on a resultset
- * @var array
- */
- protected $virtualColumns = array();
-
- /**
- * Empty constructor (this allows people with their own BaseObject implementation to use its constructor)
- */
- public function __construct()
- {
- }
-
- /**
- * Returns whether the object has been modified.
- *
- * @return boolean True if the object has been modified.
- */
- public function isModified()
- {
- return !empty($this->modifiedColumns);
- }
-
- /**
- * Has specified column been modified?
- *
- * @param string $col column fully qualified name (BasePeer::TYPE_COLNAME), e.g. Book::AUTHOR_ID
- * @return boolean True if $col has been modified.
- */
- public function isColumnModified($col)
- {
- return in_array($col, $this->modifiedColumns);
- }
-
- /**
- * Get the columns that have been modified in this object.
- * @return array A unique list of the modified column names for this object.
- */
- public function getModifiedColumns()
- {
- return array_unique($this->modifiedColumns);
- }
-
- /**
- * Returns whether the object has ever been saved. This will
- * be false, if the object was retrieved from storage or was created
- * and then saved.
- *
- * @return true, if the object has never been persisted.
- */
- public function isNew()
- {
- return $this->new;
- }
-
- /**
- * Setter for the isNew attribute. This method will be called
- * by Propel-generated children and Peers.
- *
- * @param boolean $b the state of the object.
- */
- public function setNew($b)
- {
- $this->new = (Boolean) $b;
- }
-
- /**
- * Whether this object has been deleted.
- * @return boolean The deleted state of this object.
- */
- public function isDeleted()
- {
- return $this->deleted;
- }
-
- /**
- * Specify whether this object has been deleted.
- * @param boolean $b The deleted state of this object.
- * @return void
- */
- public function setDeleted($b)
- {
- $this->deleted = (Boolean) $b;
- }
-
- /**
- * Code to be run before persisting the object
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preSave(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after persisting the object
- * @param ConnectionInterface $con
- */
- public function postSave(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Code to be run before inserting to database
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preInsert(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after inserting to database
- * @param ConnectionInterface $con
- */
- public function postInsert(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Code to be run before updating the object in database
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preUpdate(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after updating the object in database
- * @param ConnectionInterface $con
- */
- public function postUpdate(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Code to be run before deleting the object in database
- * @param ConnectionInterface $con
- * @return boolean
- */
- public function preDelete(ConnectionInterface $con = null)
- {
- return true;
- }
-
- /**
- * Code to be run after deleting the object in database
- * @param ConnectionInterface $con
- */
- public function postDelete(ConnectionInterface $con = null)
- {
-
- }
-
- /**
- * Sets the modified state for the object to be false.
- * @param string $col If supplied, only the specified column is reset.
- * @return void
- */
- public function resetModified($col = null)
- {
- if (null !== $col) {
- while (false !== ($offset = array_search($col, $this->modifiedColumns))) {
- array_splice($this->modifiedColumns, $offset, 1);
- }
- } else {
- $this->modifiedColumns = array();
- }
- }
-
- /**
- * Compares this with another <code>BaseObject</code> instance. If
- * <code>obj</code> is an instance of <code>BaseObject</code>, delegates to
- * <code>equals(BaseObject)</code>. Otherwise, returns <code>false</code>.
- *
- * @param obj The object to compare to.
- * @return Whether equal to the object specified.
- */
- public function equals($obj)
- {
- $thisclazz = get_class($this);
- if (!is_object($obj) || !($obj instanceof $thisclazz)) {
- return false;
- }
-
- if ($this === $obj) {
- return true;
- }
-
- if (null === $this->getPrimaryKey()
- || null === $obj->getPrimaryKey()) {
- return false;
- }
-
- return $this->getPrimaryKey() === $obj->getPrimaryKey();
- }
-
- /**
- * If the primary key is not <code>null</code>, return the hashcode of the
- * primary key. Otherwise calls <code>Object.hashCode()</code>.
- *
- * @return int Hashcode
- */
- public function hashCode()
- {
- $ok = $this->getPrimaryKey();
- if (null === $ok) {
- return crc32(serialize($this));
- }
-
- return crc32(serialize($ok)); // serialize because it could be an array ("ComboKey")
- }
-
- /**
- * Get the associative array of the virtual columns in this object
- *
- * @param string $name The virtual column name
- *
- * @return array
- */
- public function getVirtualColumns()
- {
- return $this->virtualColumns;
- }
-
- /**
- * Checks the existence of a virtual column in this object
- *
- * @return boolean
- */
- public function hasVirtualColumn($name)
- {
- return isset($this->virtualColumns[$name]);
- }
-
- /**
- * Get the value of a virtual column in this object
- *
- * @return mixed
- */
- public function getVirtualColumn($name)
- {
- if (!$this->hasVirtualColumn($name)) {
- throw new PropelException(sprintf('Cannot get value of inexistent virtual column %s.', $name));
- }
-
- return $this->virtualColumns[$name];
- }
-
- /**
- * Set the value of a virtual column in this object
- *
- * @param string $name The virtual column name
- * @param mixed $value The value to give to the virtual column
- *
- * @return BaseObject The current object, for fluid interface
- */
- public function setVirtualColumn($name, $value)
- {
- $this->virtualColumns[$name] = $value;
-
- return $this;
- }
-
- /**
- * Logs a message using Propel::log().
- *
- * @param string $msg
- * @param int $priority One of the Propel::LOG_* logging levels
- * @return boolean
- */
- protected function log($msg, $priority = Propel::LOG_INFO)
- {
- return Propel::log(get_class($this) . ': ' . $msg, $priority);
- }
-
- /**
- * Populate the current object from a string, using a given parser format
- * <code>
- * $book = new Book();
- * $book->importFrom('JSON', '{"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}');
- * </code>
- *
- * @param mixed $parser A AbstractParser instance,
- * or a format name ('XML', 'YAML', 'JSON', 'CSV')
- * @param string $data The source data to import from
- *
- * @return BaseObject The current object, for fluid interface
- */
- public function importFrom($parser, $data)
- {
- if (!$parser instanceof AbstractParser) {
- $parser = AbstractParser::getParser($parser);
- }
-
- return $this->fromArray($parser->toArray($data), BasePeer::TYPE_PHPNAME);
- }
-
- /**
- * Export the current object properties to a string, using a given parser format
- * <code>
- * $book = BookQuery::create()->findPk(9012);
- * echo $book->exportTo('JSON');
- * => {"Id":9012,"Title":"Don Juan","ISBN":"0140422161","Price":12.99,"PublisherId":1234,"AuthorId":5678}');
- * </code>
- *
- * @param mixed $parser A AbstractParser instance, or a format name ('XML', 'YAML', 'JSON', 'CSV')
- * @param boolean $includeLazyLoadColumns (optional) Whether to include lazy load(ed) columns. Defaults to TRUE.
- * @return string The exported data
- */
- public function exportTo($parser, $includeLazyLoadColumns = true)
- {
- if (!$parser instanceof AbstractParser) {
- $parser = AbstractParser::getParser($parser);
- }
-
- return $parser->fromArray($this->toArray(BasePeer::TYPE_PHPNAME, $includeLazyLoadColumns, array(), true));
- }
-
- /**
- * Clean up internal collections prior to serializing
- * Avoids recursive loops that turn into segmentation faults when serializing
- */
- public function __sleep()
- {
- $this->clearAllReferences();
-
- return array_keys(get_object_vars($this));
- }
-
- /**
- * Catches calls to undefined methods.
- *
- * Provides magic import/export method support (fromXML()/toXML(), fromYAML()/toYAML(), etc.).
- * Allows to define default __call() behavior if you use a custom BaseObject
- *
- * @param string $name
- * @param mixed $params
- *
- * @return array|string
- */
- public function __call($name, $params)
- {
- if (0 === strpos($name, 'get')) {
- $virtualColumn = substr($name, 3);
- if ($this->hasVirtualColumn($virtualColumn)) {
- return $this->getVirtualColumn($virtualColumn);
- }
-
- $virtualColumn = lcfirst($virtualColumn);
- if ($this->hasVirtualColumn($virtualColumn)) {
- return $this->getVirtualColumn($virtualColumn);
- }
- }
-
- if (0 === strpos($name, 'from')) {
- $format = substr($name, 4);
-
- return $this->importFrom($format, reset($params));
- }
-
- if (0 === strpos($name, 'to')) {
- $format = substr($name, 2);
- $includeLazyLoadColumns = isset($params[0]) ? $params[0] : true;
-
- return $this->exportTo($format, $includeLazyLoadColumns);
- }
-
- throw new BadMethodCallException(sprintf('Call to undefined method: %s.', $name));
- }
-}
View
108 src/Propel/Runtime/Om/Persistent.php
@@ -1,108 +0,0 @@
-<?php
-
-/**
- * This file is part of the Propel package.
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- *
- * @license MIT License
- */
-
-namespace Propel\Runtime\Om;
-
-use Propel\Runtime\Connection\ConnectionInterface;
-
-/**
- * This interface defines methods related to saving an object
- *
- * @author Hans Lellelid <hans@xmpl.org> (Propel)
- * @author John D. McNally <jmcnally@collab.net> (Torque)
- * @author Fedor K. <fedor@apache.org> (Torque)
- */
-interface Persistent
-{
- /**
- * getter for the object primaryKey.
- *
- * @return ObjectKey the object primaryKey as an Object
- */
- public function getPrimaryKey();
-
- /**
- * Sets the PrimaryKey for the object.
- *
- * @param mixed $primaryKey The new PrimaryKey object or string (result of PrimaryKey.toString()).
- * @return void
- * @throws Exception, This method might throw an exceptions
- */
- public function setPrimaryKey($primaryKey);
-
- /**
- * Returns whether the object has been modified, since it was
- * last retrieved from storage.
- *
- * @return boolean True if the object has been modified.
- */
- public function isModified();
-
- /**
- * Has specified column been modified?
- *
- * @param string $col
- * @return boolean True if $col has been modified.
- */
- public function isColumnModified($col);
-
- /**
- * Returns whether the object has ever been saved. This will
- * be false, if the object was retrieved from storage or was created
- * and then saved.
- *
- * @return boolean True, if the object has never been persisted.
- */
- public function isNew();
-
- /**
- * Setter for the isNew attribute. This method will be called
- * by Propel-generated children and Peers.
- *
- * @param boolean $b the state of the object.
- */
- public function setNew($b);
-
- /**
- * Resets (to false) the "modified" state for this object.
- *
- * @return void
- */
- public function resetModified();
-
- /**
- * Whether this object has been deleted.
- * @return boolean The deleted state of this object.
- */
- public function isDeleted();
-
- /**
- * Specify whether this object has been deleted.
- * @param boolean $b The deleted state of this object.
- * @return void
- */
- public function setDeleted($b);
-
- /**
- * Deletes the object.
- * @param ConnectionInterface $con
- * @return void
- * @throws Exception
- */
- public function delete(ConnectionInterface $con = null);
-
- /**
- * Saves the object.
- * @param ConnectionInterface $con
- * @return void
- * @throws Exception
- */
- public function save(ConnectionInterface $con = null);
-}
View
10 tests/Propel/Tests/Generator/Util/QuickBuilderTest.php
@@ -12,8 +12,8 @@
use Propel\Generator\Platform\SqlitePlatform;
use Propel\Generator\Util\QuickBuilder;
+use Propel\Runtime\Om\ActiveRecordInterface;
use Propel\Runtime\Propel;
-use Propel\Runtime\Om\BaseObject;
use MyNameSpace\QuickBuildFoo1;
use MyNameSpace\QuickBuildFoo1Peer;
@@ -95,7 +95,7 @@ public function testGetClasses($builder)
$this->assertContains('class QuickBuildFoo1 extends BaseQuickBuildFoo1', $script);
$this->assertContains('class QuickBuildFoo1Peer extends BaseQuickBuildFoo1Peer', $script);
$this->assertContains('class QuickBuildFoo1Query extends BaseQuickBuildFoo1Query', $script);
- $this->assertContains('class QuickBuildFoo1', $script); //BaseObject
+ $this->assertContains('class QuickBuildFoo1 implements ActiveRecordInterface', $script);
$this->assertContains('class QuickBuildFoo1Peer', $script);
$this->assertContains('class QuickBuildFoo1Query extends ModelCriteria', $script);
}
@@ -109,7 +109,7 @@ public function testGetClassesLimitedClassTargets($builder)
$this->assertNotContains('class QuickBuildFoo1 extends BaseQuickBuildFoo1', $script);
$this->assertNotContains('class QuickBuildFoo1Peer extends BaseQuickBuildFoo1Peer', $script);
$this->assertNotContains('class QuickBuildFoo1Query extends BaseQuickBuildFoo1Query', $script);
- $this->assertContains('class QuickBuildFoo1', $script); //BaseObject
+ $this->assertContains('class QuickBuildFoo1 implements ActiveRecordInterface', $script);
$this->assertContains('class QuickBuildFoo1Peer', $script);
$this->assertContains('class QuickBuildFoo1Query extends ModelCriteria', $script);
}
@@ -121,10 +121,8 @@ public function testBuildClasses($builder)
{
$builder->buildClasses();
$foo = new QuickBuildFoo1();
+ $this->assertTrue($foo instanceof ActiveRecordInterface);
$this->assertTrue(QuickBuildFoo1Peer::getTableMap() instanceof \MyNameSpace\Map\QuickBuildFoo1TableMap);
-
- $this->markTestIncomplete('need a new Interface for BaseObject');
-// $this->assertTrue($foo instanceof BaseObject);
}
public function testBuild()
View
4 tests/Propel/Tests/Runtime/Om/BaseObjectTest.php
@@ -10,7 +10,7 @@
namespace Propel\Tests\Runtime\Om;
-use Propel\Runtime\Om\BaseObject;
+use Propel\Tests\Bookstore\Book;
/**
* Test class for BaseObject.
@@ -63,7 +63,7 @@ public function testSetVirtualColumn()
}
}
-class TestableBaseObject extends BaseObject
+class TestableBaseObject extends Book
{
public $virtualColumns = array();
}

0 comments on commit 294af83

Please sign in to comment.