module php/reflect/common/class imports php/reflect/oo/classes strategies /** * Succeeds if the current term is an instance of PHP class * Since this is an abstract class there are no instances */ instanceof-PHPClass = fail /** * Properties */ strategies /** * Returns the name of the class * * @type Class Object -> String */ get-name(s) = instanceof-PHPClass; get-reference-ast ; s get-class-name = ?Class(_, <id>, _, _) /** * Returns the name of the class * it extends (if any) * * @type Class Object -> String */ get-extends(s) = instanceof-PHPClass; get-reference-ast ; s get-extends-name = ?Class(_, _, Some(Extends(<id>)), _) /** * Returns the instance-variables of this class * * @type Class Object -> List(InstanceVariable) */ get-instance-variables(s) = instanceof-PHPClass; get-reference-ast ; collect-all(s) match-instance-variable = ?InstanceVariable(_) strategies /** * Returns all functions. * * @type Class Object -> List(Function Object) */ get-functions = instanceof-PHPClass; classes_get-instance-field(|"function-table") ; hashtable-values /** * @param Name of the function (String) * @type Class Object -> Class Object */ get-function(|name) = instanceof-PHPClass; classes_get-instance-field(|"function-table") ; hashtable-get(|name) /** * @param Function Object * @type Class Object -> Class Object */ add-function(|function) = instanceof-PHPClass; where( classes_get-instance-field(|"function-table") ; where(name := <get-name> function) ; hashtable-put(|name, function) ) strategies /** * Returns the parent of a class object (if any) * * @type Class Object -> Class Object */ get-class-parent = instanceof-PHPClass; ?class; extends := <get-extends> class ; env := <get-php-environment> ; <get-class(|extends)> env /** * AST representation */ strategies /** * Returns the AST of the function. * * @type Function Object -> AST */ get-ast = instanceof-PHPClass; get-reference-ast get-reference-ast = instanceof-PHPClass; classes_get-instance-field(|"reference-ast") set-reference-ast(|refast) = instanceof-PHPClass; classes_set-instance-field(|"reference-ast", refast)