新增parseclass组件

This commit is contained in:
JaguarJack 2020-06-05 15:35:51 +08:00
parent f55ff91554
commit 8550c99133

View File

@ -1 +1,105 @@
<?php
namespace catcher\library;
class ParseClass
{
protected $namespace;
protected $module;
protected $controller;
public function parentMethods()
{
$class = $this->getClass();
$parent = $class->getParentClass();
$methods = [];
foreach ($parent->getMethods() as $method) {
if (!$this->isMagicMethod($method->getName())) {
$methods[] = $method->getName();
}
}
return $methods;
}
public function methods()
{
$class = $this->getClass();
$methods = [];
foreach ($class->getMethods() as $method) {
if (!$this->isMagicMethod($method->getName())) {
$methods[] = $method->getName();
}
}
return $methods;
}
/**
* @return mixed
*/
public function onlySelfMethods()
{
$methods = [];
$parentMethods = $this->parentMethods();
foreach ($this->methods() as $method) {
if (!in_array($method, $parentMethods)) {
$methods[] = $method;
}
}
return $methods;
}
public function getClass()
{
return new \ReflectionClass($this->namespace . $this->module . '\\controller\\'.
ucfirst($this->controller));
}
protected function isMagicMethod($method)
{
return strpos($method, '__') !== false;
}
public function setModule($module)
{
$composer = \json_decode(file_get_contents(root_path() . 'composer.json'), true);
$psr4 = $composer['autoload']['psr-4'];
foreach ($psr4 as $key => $_module) {
if ($_module == $module) {
$this->namespace = $key;
break;
}
}
return $this;
}
public function setRule($module, $controller)
{
$this->module = $module;
$this->controller = $controller;
return $this;
}
}