class ClassNode
Same name in this branch
- 11.1.x vendor/symfony/css-selector/Node/ClassNode.php \Symfony\Component\CssSelector\Node\ClassNode
Class node.
@author Konstantin Kudryashov <ever.zet@gmail.com>
Hierarchy
- class \Prophecy\Doubler\Generator\Node\ClassNode
Expanded class hierarchy of ClassNode
10 files declare their use of ClassNode
- ClassCreatorException.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Exception/ Doubler/ ClassCreatorException.php - ClassPatchInterface.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ ClassPatch/ ClassPatchInterface.php - DisableConstructorPatch.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ ClassPatch/ DisableConstructorPatch.php - KeywordPatch.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ ClassPatch/ KeywordPatch.php - MagicCallPatch.php in vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ ClassPatch/ MagicCallPatch.php
File
-
vendor/
phpspec/ prophecy/ src/ Prophecy/ Doubler/ Generator/ Node/ ClassNode.php, line 22
Namespace
Prophecy\Doubler\Generator\NodeView source
class ClassNode {
/**
* @var class-string
*/
private $parentClass = 'stdClass';
/**
* @var list<class-string>
*/
private $interfaces = array();
/**
* @var array<string, string>
*
* @phpstan-var array<string, 'public'|'private'|'protected'>
*/
private $properties = array();
/**
* @var list<string>
*/
private $unextendableMethods = array();
/**
* @var bool
*/
private $readOnly = false;
/**
* @var array<string, MethodNode>
*/
private $methods = array();
/**
* @return class-string
*/
public function getParentClass() {
return $this->parentClass;
}
/**
* @param class-string|null $class
*
* @return void
*/
public function setParentClass($class) {
$this->parentClass = $class ?: 'stdClass';
}
/**
* @return list<class-string>
*/
public function getInterfaces() {
return $this->interfaces;
}
/**
* @param class-string $interface
*
* @return void
*/
public function addInterface($interface) {
if ($this->hasInterface($interface)) {
return;
}
array_unshift($this->interfaces, $interface);
}
/**
* @param class-string $interface
*
* @return bool
*/
public function hasInterface($interface) {
return in_array($interface, $this->interfaces);
}
/**
* @return array<string, string>
*
* @phpstan-return array<string, 'public'|'private'|'protected'>
*/
public function getProperties() {
return $this->properties;
}
/**
* @param string $name
* @param string $visibility
*
* @return void
*
* @phpstan-param 'public'|'private'|'protected' $visibility
*/
public function addProperty($name, $visibility = 'public') {
$visibility = strtolower($visibility);
if (!\in_array($visibility, array(
'public',
'private',
'protected',
), true)) {
throw new InvalidArgumentException(sprintf('`%s` property visibility is not supported.', $visibility));
}
$this->properties[$name] = $visibility;
}
/**
* @return array<string, MethodNode>
*/
public function getMethods() {
return $this->methods;
}
/**
* @param MethodNode $method
* @param bool $force
*
* @return void
*/
public function addMethod(MethodNode $method, $force = false) {
if (!$this->isExtendable($method->getName())) {
$message = sprintf('Method `%s` is not extendable, so can not be added.', $method->getName());
throw new MethodNotExtendableException($message, $this->getParentClass(), $method->getName());
}
if ($force || !isset($this->methods[$method->getName()])) {
$this->methods[$method->getName()] = $method;
}
}
/**
* @param string $name
*
* @return void
*/
public function removeMethod($name) {
unset($this->methods[$name]);
}
/**
* @param string $name
*
* @return MethodNode|null
*/
public function getMethod($name) {
return $this->hasMethod($name) ? $this->methods[$name] : null;
}
/**
* @param string $name
*
* @return bool
*/
public function hasMethod($name) {
return isset($this->methods[$name]);
}
/**
* @return list<string>
*/
public function getUnextendableMethods() {
return $this->unextendableMethods;
}
/**
* @param string $unextendableMethod
*
* @return void
*/
public function addUnextendableMethod($unextendableMethod) {
if (!$this->isExtendable($unextendableMethod)) {
return;
}
$this->unextendableMethods[] = $unextendableMethod;
}
/**
* @param string $method
*
* @return bool
*/
public function isExtendable($method) {
return !in_array($method, $this->unextendableMethods);
}
/**
* @return bool
*/
public function isReadOnly() {
return $this->readOnly;
}
/**
* @param bool $readOnly
*
* @return void
*/
public function setReadOnly($readOnly) {
$this->readOnly = $readOnly;
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
ClassNode::$interfaces | private | property | |
ClassNode::$methods | private | property | |
ClassNode::$parentClass | private | property | |
ClassNode::$properties | private | property | @phpstan-var array<string, 'public'|'private'|'protected'> |
ClassNode::$readOnly | private | property | |
ClassNode::$unextendableMethods | private | property | |
ClassNode::addInterface | public | function | |
ClassNode::addMethod | public | function | |
ClassNode::addProperty | public | function | @phpstan-param 'public'|'private'|'protected' $visibility |
ClassNode::addUnextendableMethod | public | function | |
ClassNode::getInterfaces | public | function | |
ClassNode::getMethod | public | function | |
ClassNode::getMethods | public | function | |
ClassNode::getParentClass | public | function | |
ClassNode::getProperties | public | function | @phpstan-return array<string, 'public'|'private'|'protected'> |
ClassNode::getUnextendableMethods | public | function | |
ClassNode::hasInterface | public | function | |
ClassNode::hasMethod | public | function | |
ClassNode::isExtendable | public | function | |
ClassNode::isReadOnly | public | function | |
ClassNode::removeMethod | public | function | |
ClassNode::setParentClass | public | function | |
ClassNode::setReadOnly | public | function |