summaryrefslogtreecommitdiff
path: root/system/libraries/Model.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries/Model.php')
-rw-r--r--system/libraries/Model.php35
1 files changed, 33 insertions, 2 deletions
diff --git a/system/libraries/Model.php b/system/libraries/Model.php
index 0c9fd8d6..01d16fdd 100644
--- a/system/libraries/Model.php
+++ b/system/libraries/Model.php
@@ -2,15 +2,46 @@
/**
* Model base class.
*
- * $Id: Model.php 4007 2009-02-20 01:54:00Z jheathco $
+ * $Id: Model.php 4679 2009-11-10 01:45:52Z isaiah $
*
* @package Core
* @author Kohana Team
* @copyright (c) 2007-2009 Kohana Team
- * @license http://kohanaphp.com/license.html
+ * @license http://kohanaphp.com/license
*/
class Model_Core {
+ /**
+ * Creates and returns a new model.
+ *
+ * @param string model name
+ * @param mixed constructor arguments
+ * @param boolean construct the model with multiple arguments
+ * @return Model
+ */
+ public static function factory($name, $args = NULL, $multiple = FALSE)
+ {
+ // Model class name
+ $class = ucfirst($name).'_Model';
+
+ if ($args === NULL)
+ {
+ // Create a new model with no arguments
+ return new $class;
+ }
+
+ if ($multiple !== TRUE)
+ {
+ // Create a model with a single argument
+ return new $class($args);
+ }
+
+ $class = new ReflectionClass($class);
+
+ // Create a model with multiple arguments
+ return $class->newInstanceArgs($args);
+ }
+
// Database object
protected $db = 'default';