protected function _initialize($property, $method) {
		if (is_string($method)) {
			$mode = self::MODE_JOIN;
			$sourcePrimary = null;
		}
		elseif (is_array($method)) {
			if (isset($method[self::SOURCE_METHOD], $method[self::SOURCE_MODE])) {
				$sourcePrimary = isset($method[self::SOURCE_PRIMARY]) ? $method[self::SOURCE_PRIMARY] : null;
				
				$mode   = $method[self::SOURCE_MODE];
				$method = $method[self::SOURCE_METHOD];
			}
			elseif (isset($method[0], $method[1])) {
				$sourcePrimary = isset($method[2]) ? $method[2] : null;
				
				$mode   = $method[1];
				$method = $method[0];
			}
			else {
				throw new Exception('Invalid source definition');
			}
		}
		else {
			throw new Exception('Source must be specified as a string or an array');
		}
		
		if ($this->hasCollection()) {
			$this->_initMany($property, $method, $mode, $sourcePrimary);
		} else {
			$this->_initOne($property, $method, $mode);
		}
	}
protected function _initialize($property, $method) {
		if (is_string($method)) {
			$mode = self::MODE_JOIN;
			$sourcePrimary = null;
		}
		elseif (is_array($method)) {
			if (isset($method[self::SOURCE_METHOD], $method[self::SOURCE_MODE])) {
				$sourcePrimary = isset($method[self::SOURCE_PRIMARY]) ? $method[self::SOURCE_PRIMARY] : null;
				
				$mode   = $method[self::SOURCE_MODE];
				$method = $method[self::SOURCE_METHOD];
			}
			elseif (isset($method[0], $method[1])) {
				$sourcePrimary = isset($method[2]) ? $method[2] : null;
				
				$mode   = $method[1];
				$method = $method[0];
			}
			else {
				throw new Exception('Invalid source definition');
			}
		}
		else {
			throw new Exception('Source must be specified as a string or an array');
		}
		
		if ($this->hasCollection()) {
			$this->_initMany($property, $method, $mode, $sourcePrimary);
		} else {
			$this->_initOne($property, $method, $mode);
		}
	}
protected function _initialize ( $ property , $ method ) { if ( is_string ( $ method ) ) { $ mode = self :: MODE_JOIN ; $ sourcePrimary = null ; } elseif ( is_array ( $ method ) ) { if ( isset ( $ method [ self :: SOURCE_METHOD ] , $ method [ self :: SOURCE_MODE ] ) ) { $ sourcePrimary = isset ( $ method [ self :: SOURCE_PRIMARY ] ) ? $ method [ self :: SOURCE_PRIMARY ] : null ; $ mode = $ method [ self :: SOURCE_MODE ] ; $ method = $ method [ self :: SOURCE_METHOD ] ; } elseif ( isset ( $ method [ 0 ] , $ method [ 1 ] ) ) { $ sourcePrimary = isset ( $ method [ 2 ] ) ? $ method [ 2 ] : null ; $ mode = $ method [ 1 ] ; $ method = $ method [ 0 ] ; } else { throw new Exception ( 'Invalid source definition' ) ; } } else { throw new Exception ( 'Source must be specified as a string or an array' ) ; } if ( $ this -> hasCollection ( ) ) { $ this -> _initMany ( $ property , $ method , $ mode , $ sourcePrimary ) ; } else { $ this -> _initOne ( $ property , $ method , $ mode ) ; } }
Lazy initialization of data

@param  string $method
@throws Exception
Lazy initialization of data