mirror of
https://github.com/torrentpier/torrentpier-lts.git
synced 2025-03-01 15:21:02 +03:00
225 lines
5.3 KiB
PHP
225 lines
5.3 KiB
PHP
<?php
|
|
/**
|
|
* Zend Framework (http://framework.zend.com/)
|
|
*
|
|
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
|
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
|
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
|
*/
|
|
|
|
namespace Zend\Code\Generator;
|
|
|
|
abstract class AbstractMemberGenerator extends AbstractGenerator
|
|
{
|
|
/**#@+
|
|
* @const int Flags for construction usage
|
|
*/
|
|
const FLAG_ABSTRACT = 0x01;
|
|
const FLAG_FINAL = 0x02;
|
|
const FLAG_STATIC = 0x04;
|
|
const FLAG_PUBLIC = 0x10;
|
|
const FLAG_PROTECTED = 0x20;
|
|
const FLAG_PRIVATE = 0x40;
|
|
/**#@-*/
|
|
|
|
/**#@+
|
|
* @param const string
|
|
*/
|
|
const VISIBILITY_PUBLIC = 'public';
|
|
const VISIBILITY_PROTECTED = 'protected';
|
|
const VISIBILITY_PRIVATE = 'private';
|
|
/**#@-*/
|
|
|
|
/**
|
|
* @var DocBlockGenerator
|
|
*/
|
|
protected $docBlock = null;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $name = null;
|
|
|
|
/**
|
|
* @var int
|
|
*/
|
|
protected $flags = self::FLAG_PUBLIC;
|
|
|
|
/**
|
|
* @param int|array $flags
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setFlags($flags)
|
|
{
|
|
if (is_array($flags)) {
|
|
$flagsArray = $flags;
|
|
$flags = 0x00;
|
|
foreach ($flagsArray as $flag) {
|
|
$flags |= $flag;
|
|
}
|
|
}
|
|
// check that visibility is one of three
|
|
$this->flags = $flags;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param int $flag
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function addFlag($flag)
|
|
{
|
|
$this->setFlags($this->flags | $flag);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param int $flag
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function removeFlag($flag)
|
|
{
|
|
$this->setFlags($this->flags & ~$flag);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param bool $isAbstract
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setAbstract($isAbstract)
|
|
{
|
|
return (($isAbstract) ? $this->addFlag(self::FLAG_ABSTRACT) : $this->removeFlag(self::FLAG_ABSTRACT));
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isAbstract()
|
|
{
|
|
return (bool) ($this->flags & self::FLAG_ABSTRACT);
|
|
}
|
|
|
|
/**
|
|
* @param bool $isFinal
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setFinal($isFinal)
|
|
{
|
|
return (($isFinal) ? $this->addFlag(self::FLAG_FINAL) : $this->removeFlag(self::FLAG_FINAL));
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isFinal()
|
|
{
|
|
return (bool) ($this->flags & self::FLAG_FINAL);
|
|
}
|
|
|
|
/**
|
|
* @param bool $isStatic
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setStatic($isStatic)
|
|
{
|
|
return (($isStatic) ? $this->addFlag(self::FLAG_STATIC) : $this->removeFlag(self::FLAG_STATIC));
|
|
}
|
|
|
|
/**
|
|
* @return bool
|
|
*/
|
|
public function isStatic()
|
|
{
|
|
return (bool) ($this->flags & self::FLAG_STATIC); // is FLAG_STATIC in flags
|
|
}
|
|
|
|
/**
|
|
* @param string $visibility
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setVisibility($visibility)
|
|
{
|
|
switch ($visibility) {
|
|
case self::VISIBILITY_PUBLIC:
|
|
$this->removeFlag(self::FLAG_PRIVATE | self::FLAG_PROTECTED); // remove both
|
|
$this->addFlag(self::FLAG_PUBLIC);
|
|
break;
|
|
case self::VISIBILITY_PROTECTED:
|
|
$this->removeFlag(self::FLAG_PUBLIC | self::FLAG_PRIVATE); // remove both
|
|
$this->addFlag(self::FLAG_PROTECTED);
|
|
break;
|
|
case self::VISIBILITY_PRIVATE:
|
|
$this->removeFlag(self::FLAG_PUBLIC | self::FLAG_PROTECTED); // remove both
|
|
$this->addFlag(self::FLAG_PRIVATE);
|
|
break;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getVisibility()
|
|
{
|
|
switch (true) {
|
|
case ($this->flags & self::FLAG_PROTECTED):
|
|
return self::VISIBILITY_PROTECTED;
|
|
case ($this->flags & self::FLAG_PRIVATE):
|
|
return self::VISIBILITY_PRIVATE;
|
|
default:
|
|
return self::VISIBILITY_PUBLIC;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param string $name
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setName($name)
|
|
{
|
|
$this->name = (string) $name;
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return string
|
|
*/
|
|
public function getName()
|
|
{
|
|
return $this->name;
|
|
}
|
|
|
|
/**
|
|
* @param DocBlockGenerator|string $docBlock
|
|
* @throws Exception\InvalidArgumentException
|
|
* @return AbstractMemberGenerator
|
|
*/
|
|
public function setDocBlock($docBlock)
|
|
{
|
|
if (is_string($docBlock)) {
|
|
$docBlock = new DocBlockGenerator($docBlock);
|
|
} elseif (!$docBlock instanceof DocBlockGenerator) {
|
|
throw new Exception\InvalidArgumentException(sprintf(
|
|
'%s is expecting either a string, array or an instance of %s\DocBlockGenerator',
|
|
__METHOD__,
|
|
__NAMESPACE__
|
|
));
|
|
}
|
|
|
|
$this->docBlock = $docBlock;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return DocBlockGenerator
|
|
*/
|
|
public function getDocBlock()
|
|
{
|
|
return $this->docBlock;
|
|
}
|
|
}
|