diff cake/libs/overloadable_php4.php @ 0:261e66bd5a0c

hg init
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Jul 2011 21:08:31 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cake/libs/overloadable_php4.php	Sun Jul 24 21:08:31 2011 +0900
@@ -0,0 +1,165 @@
+<?php
+/**
+ * Overload abstraction interface.  Merges differences between PHP4 and 5.
+ *
+ * PHP versions 4 and 5
+ *
+ * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
+ * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright     Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link          http://cakephp.org CakePHP(tm) Project
+ * @package       cake
+ * @subpackage    cake.cake.libs
+ * @since         CakePHP(tm) v 1.2
+ * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+/**
+ * Overloadable class selector
+ *
+ * Load the interface class based on the version of PHP.
+ *
+ * @package       cake
+ * @subpackage    cake.cake.libs
+ */
+class Overloadable extends Object {
+
+/**
+ * Constructor.
+ *
+ * @access private
+ */
+	function __construct() {
+		$this->overload();
+		parent::__construct();
+	}
+
+/**
+ * Overload implementation.
+ *
+ * @access public
+ */
+	function overload() {
+		if (function_exists('overload')) {
+			if (func_num_args() > 0) {
+				foreach (func_get_args() as $class) {
+					if (is_object($class)) {
+						overload(get_class($class));
+					} elseif (is_string($class)) {
+						overload($class);
+					}
+				}
+			} else {
+				overload(get_class($this));
+			}
+		}
+	}
+
+/**
+ * Magic method handler.
+ *
+ * @param string $method Method name
+ * @param array $params Parameters to send to method
+ * @param mixed $return Where to store return value from method
+ * @return boolean Success
+ * @access private
+ */
+	function __call($method, $params, &$return) {
+		if (!method_exists($this, 'call__')) {
+			trigger_error(sprintf(__('Magic method handler call__ not defined in %s', true), get_class($this)), E_USER_ERROR);
+		}
+		$return = $this->call__($method, $params);
+		return true;
+	}
+}
+Overloadable::overload('Overloadable');
+
+/**
+ * Overloadable2 class selector
+ *
+ * Load the interface class based on the version of PHP.
+ *
+ * @package       cake
+ * @subpackage    cake.cake.libs
+ */
+class Overloadable2 extends Object {
+
+/**
+ * Constructor
+ *
+ * @access private
+ */
+	function __construct() {
+		$this->overload();
+		parent::__construct();
+	}
+
+/**
+ * Overload implementation.
+ *
+ * @access public
+ */
+	function overload() {
+		if (function_exists('overload')) {
+			if (func_num_args() > 0) {
+				foreach (func_get_args() as $class) {
+					if (is_object($class)) {
+						overload(get_class($class));
+					} elseif (is_string($class)) {
+						overload($class);
+					}
+				}
+			} else {
+				overload(get_class($this));
+			}
+		}
+	}
+
+/**
+ * Magic method handler.
+ *
+ * @param string $method Method name
+ * @param array $params Parameters to send to method
+ * @param mixed $return Where to store return value from method
+ * @return boolean Success
+ * @access private
+ */
+	function __call($method, $params, &$return) {
+		if (!method_exists($this, 'call__')) {
+			trigger_error(sprintf(__('Magic method handler call__ not defined in %s', true), get_class($this)), E_USER_ERROR);
+		}
+		$return = $this->call__($method, $params);
+		return true;
+	}
+
+/**
+ * Getter.
+ *
+ * @param mixed $name What to get
+ * @param mixed $value Where to store returned value
+ * @return boolean Success
+ * @access private
+ */
+	function __get($name, &$value) {
+		$value = $this->get__($name);
+		return true;
+	}
+
+/**
+ * Setter.
+ *
+ * @param mixed $name What to set
+ * @param mixed $value Value to set
+ * @return boolean Success
+ * @access private
+ */
+	function __set($name, $value) {
+		$this->set__($name, $value);
+		return true;
+	}
+}
+Overloadable::overload('Overloadable2');