Zephir\ClassDefinition::hasMethod PHP Method

hasMethod() public method

Checks if the class implements an specific name
public hasMethod ( $methodName ) : boolean
return boolean
    public function hasMethod($methodName)
    {
        $methodNameLower = strtolower($methodName);
        foreach ($this->methods as $name => $method) {
            if ($methodNameLower == $name) {
                return true;
            }
        }
        $extendsClassDefinition = $this->getExtendsClassDefinition();
        if ($extendsClassDefinition instanceof ClassDefinition) {
            if ($extendsClassDefinition->hasMethod($methodName)) {
                return true;
            }
        }
        return false;
    }

Usage Example

Ejemplo n.º 1
0
 /**
  * Checks if a class implements an interface
  *
  * @param ClassDefinition $classDefinition
  * @param ClassDefinition $interfaceDefinition
  * @throws CompilerException
  */
 public function checkInterfaceImplements(ClassDefinition $classDefinition, ClassDefinition $interfaceDefinition)
 {
     foreach ($interfaceDefinition->getMethods() as $method) {
         if (!$classDefinition->hasMethod($method->getName())) {
             throw new CompilerException("Class " . $classDefinition->getCompleteName() . " must implement a method called: \"" . $method->getName() . "\" as requirement of interface: \"" . $interfaceDefinition->getCompleteName() . "\"");
         }
         if ($method->hasParameters()) {
             $implementedMethod = $classDefinition->getMethod($method->getName());
             if ($implementedMethod->getNumberOfRequiredParameters() > $method->getNumberOfRequiredParameters() || $implementedMethod->getNumberOfParameters() < $method->getNumberOfParameters()) {
                 throw new CompilerException("Class " . $classDefinition->getCompleteName() . "::" . $method->getName() . "() does not have the same number of required parameters in interface: \"" . $interfaceDefinition->getCompleteName() . "\"");
             }
         }
     }
 }