Fix magic functions
git-svn-id: http://php-reader.googlecode.com/svn/trunk@251 51a70ab9-7547-0410-9469-37e369ee0574
This commit is contained in:
@@ -185,8 +185,8 @@ final class Zend_Media_Flac
|
|||||||
* Returns an array of metadata blocks frames matching the given type or an empty array if no metadata blocks
|
* Returns an array of metadata blocks frames matching the given type or an empty array if no metadata blocks
|
||||||
* matched the type.
|
* matched the type.
|
||||||
*
|
*
|
||||||
* Please note that one may also use the shorthand $obj->type to access the first metadata block with the given
|
* Please note that one may also use the shorthand $obj->type or $obj->getType(), where the type is the metadata
|
||||||
* type.
|
* block name, to access the first metadata block with the given type.
|
||||||
*
|
*
|
||||||
* @param string $type The metadata block type.
|
* @param string $type The metadata block type.
|
||||||
* @return Array
|
* @return Array
|
||||||
@@ -203,10 +203,35 @@ final class Zend_Media_Flac
|
|||||||
return $matches;
|
return $matches;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magic function so that $obj->X() or $obj->getX() will work, where X is the name of the metadata block. If there
|
||||||
|
* is no metadata block by the given name, an exception is thrown.
|
||||||
|
*
|
||||||
|
* @param string $name The metadata block name.
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function __call($name, $arguments)
|
||||||
|
{
|
||||||
|
if (preg_match('/^(?:get)([A-Z].*)$/', $name, $matches)) {
|
||||||
|
$name = lcfirst($matches[1]);
|
||||||
|
}
|
||||||
|
if (defined($constant = 'self::' . strtoupper(preg_replace('/(?<=[a-z])[A-Z]/', '_$0', $name)))) {
|
||||||
|
$metadataBlocks = $this->getMetadataBlocksByType(constant($constant));
|
||||||
|
if (isset($metadataBlocks[0])) {
|
||||||
|
return $metadataBlocks[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!empty($this->_comments[strtoupper($name)])) {
|
||||||
|
return $this->_comments[strtoupper($name)][0];
|
||||||
|
}
|
||||||
|
require_once 'Zend/Media/Flac/Exception.php';
|
||||||
|
throw new Zend_Media_Flac_Exception('Unknown metadata block: ' . strtoupper($name));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Magic function so that $obj->value will work.
|
* Magic function so that $obj->value will work.
|
||||||
*
|
*
|
||||||
* @param string $name The field name.
|
* @param string $name The metadata block name.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function __get($name)
|
public function __get($name)
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ final class Zend_Media_Flac_MetadataBlock_VorbisComment extends Zend_Media_Flac_
|
|||||||
public function __call($name, $arguments)
|
public function __call($name, $arguments)
|
||||||
{
|
{
|
||||||
if (method_exists($this, $name)) {
|
if (method_exists($this, $name)) {
|
||||||
return $this->$name($arguments);
|
return call_user_func(array($this, $name), $arguments);
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return $this->_impl->$name($arguments);
|
return $this->_impl->$name($arguments);
|
||||||
|
|||||||
@@ -121,15 +121,53 @@ final class Zend_Media_Vorbis_Header_Comment extends Zend_Media_Vorbis_Header
|
|||||||
return $this->_comments;
|
return $this->_comments;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns an array of comments having the field names as keys and an array of values as a value. The array is
|
||||||
|
* restricted to field names that matches the given criteria. Unlike the getX() methods, which return the first
|
||||||
|
* value, this method returns an array of field values.
|
||||||
|
*
|
||||||
|
* @return Array
|
||||||
|
*/
|
||||||
|
public function getCommentsByName($name)
|
||||||
|
{
|
||||||
|
if (!empty($this->_comments[strtoupper($name)])) {
|
||||||
|
return $this->_comments[strtoupper($name)];
|
||||||
|
}
|
||||||
|
return array();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Magic function so that $obj->X() or $obj->getX() will work, where X is the name of the comment field. The method
|
||||||
|
* will attempt to return the first field by the given name from the comment. If there is no field with given name,
|
||||||
|
* an exception is thrown.
|
||||||
|
*
|
||||||
|
* @param string $name The field name.
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function __call($name, $arguments)
|
||||||
|
{
|
||||||
|
if (preg_match('/^(?:get)([A-Z].*)$/', $name, $matches)) {
|
||||||
|
$name = $matches[1];
|
||||||
|
}
|
||||||
|
if (!empty($this->_comments[strtoupper($name)])) {
|
||||||
|
return $this->_comments[strtoupper($name)][0];
|
||||||
|
}
|
||||||
|
require_once 'Zend/Media/Vorbis/Exception.php';
|
||||||
|
throw new Zend_Media_Vorbis_Exception('Unknown field: ' . strtoupper($name));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Magic function so that $obj->value will work. The method will attempt to return the first field by the given
|
* Magic function so that $obj->value will work. The method will attempt to return the first field by the given
|
||||||
* name from the comment. If there is no field with given name, functionality of the parent method is executed.
|
* name from the comment. If there is no field with given name, functionality of the parent method is executed.
|
||||||
*
|
*
|
||||||
* @param string $name The field name.
|
* @param string $name The field name.
|
||||||
* @return mixed
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function __get($name)
|
public function __get($name)
|
||||||
{
|
{
|
||||||
|
if (method_exists($this, 'get' . ucfirst($name))) {
|
||||||
|
return call_user_func(array($this, 'get' . ucfirst($name)));
|
||||||
|
}
|
||||||
if (!empty($this->_comments[strtoupper($name)])) {
|
if (!empty($this->_comments[strtoupper($name)])) {
|
||||||
return $this->_comments[strtoupper($name)][0];
|
return $this->_comments[strtoupper($name)][0];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user