PHP反照小试: 提取控制器的action方法
PHP反射小试: 提取控制器的action方法
<?php /** * Acl 资源查询器 * * 在指定的 控制器目录中查找 对应的: * * 控制器 以及其 action 列表 * 并对 控制器 已经action 注释中的 @aclres-finder-desc{ 你的注释 }aclres-finder-desc@ * 做自动提取 * * 开发者只需在 控制器类文件中 进行对应的标述,即可... 基本就解决了 手动提取的工作了 :-) * * @author 色色 * @version 0.1 * */ class Pkg_Reflection_AclResource_Searcher { static function loadControllerList($basepath){ $paths = Core_AppUtils::recursion_glob($basepath,'*.php'); if (empty($paths)) return array(); foreach ($paths as $k => $v){ // 1. 去掉基准路径 $v = str_replace($basepath,'',$v); // 2. 去掉后缀 $v = preg_replace('/\.php$/i','',$v); // 3. 拆分过滤 $v = Core_AppUtils::normalize($v,DIRECTORY_SEPARATOR); if (empty($v)) continue; $paths[$k] = implode('_',$v); } $d = array(); foreach ($paths as $controller){ $d[$controller] = self::getActionListFromControllerClass($controller); } return $d; } static function getActionListFromControllerClass($controller_name){ static $controllerClassPrefix = null; if (!$controllerClassPrefix) { $controllerClassPrefix = Core_App::ini('mvc/web/dispatcher/controllerClassPrefix','Core_Controller_'); } $clazz = "{$controllerClassPrefix}{$controller_name}"; Core_Autoloader::loadClass($clazz,true); $obj = new ReflectionClass($clazz); $d = array(); $publicMethods = $obj->getMethods(ReflectionMethod::IS_PUBLIC); foreach ($publicMethods as $method){ if (preg_match('/^action/i',$method->name)) { $action_name = preg_replace('/^action/i','',$method->name); $rmd = Core_Mvc_Router::resourceEncode($controller_name,$action_name); $q = array_shift($rmd); $d[$q] = self::getAclResourceDescription($method->getDocComment()); } } return array( 'description' => self::getAclResourceDescription($obj->getDocComment()), 'actions' => $d ); } static function getAclResourceDescription($finder){ static $tagfinder_start = '@aclres-finder-desc{'; static $tagfinder_end = '}aclres-finder-desc@'; if (empty($finder)) return ''; $start = stripos($finder,$tagfinder_start); if ($start){ $end = stripos($finder,$tagfinder_end); if ($end && $end > $start){ // 只有闭合的标签才行 $start = $start+strlen($tagfinder_start); return trim(substr($finder,$start,$end-$start)); } } return ''; } }

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Wenn ein SpringBoot-Neuling ein Projekt erstellt, kann der Controller nicht gescannt werden und es treten eine Reihe von Problemen auf. 1.2.3.4.5.6 Eine andere Möglichkeit besteht darin, @ComponentScan(basePackages={"xxx.xxx.xx",xxx.xxx" hinzuzufügen Starten der Dienstklasse) .xx“}) ist der vollständig qualifizierte Name des Pakets, der für mehrere benutzerdefinierte SpringBoot-Controller verwendet werden kann. Die benutzerdefinierte SpringBoot-Controller-Route kann nicht gescannt werden und kann nicht gefunden werden, da die Startklasse und das benutzerdefinierte Controller-Paket vorhanden sind liegen nicht im selben Verzeichnis. Offiziell empfohlene Platzierung von application.java

Lösung für Docker-Startfehler: 1. Überprüfen Sie den Betriebsstatus und geben Sie dann den belegten Speicher über den Befehl „echo 3 > /proc/sys/vm/drop_caches“ frei. 2. Verwenden Sie „$netstat -nltp|grep ..“. "-Befehl, um zu überprüfen, ob der Port belegt ist. Wenn nach dem Online-Gehen festgestellt wird, dass er belegt ist, ändern Sie ihn in einen verfügbaren Port und starten Sie neu.

DJI hat noch keine Pläne zur Einführung einer neuen Action-Kamera bestätigt. Stattdessen scheint es, dass GoPro in diesem Jahr seinem Rivalen einen Schritt voraus sein wird, nachdem angekündigt wurde, dass es am 4. September zwei neue Action-Kameras vorstellen wird. Zum Vergleich: Diese werden voraussichtlich a

Vorwort In einigen Fällen sind die Präfixe im Service-Controller konsistent. Beispielsweise lautet das Präfix aller URLs /context-path/api/v1, und einigen URLs muss ein einheitliches Präfix hinzugefügt werden. Die denkbare Lösung besteht darin, den Kontextpfad des Dienstes zu ändern und api/v1 zum Kontextpfad hinzuzufügen. Durch Ändern des globalen Präfixes kann das oben genannte Problem gelöst werden, es gibt jedoch einige Nachteile URLs erfordern Präfixe. Wenn es sich um api/v2 handelt, kann es nicht unterschieden werden. Wenn Sie api/v1 nicht zu einigen statischen Ressourcen im Dienst hinzufügen möchten, kann es nicht unterschieden werden. Im Folgenden werden benutzerdefinierte Anmerkungen verwendet, um bestimmte URL-Präfixe einheitlich hinzuzufügen. eins,

Erstellen Sie mit Automator neue Textdateien in Ordnern auf dem Mac. Automator ist eine leistungsstarke Anwendung, mit der Sie Skripts schreiben und automatisieren können. In diesem Fall erstellen wir eine Automator-Schnellaktion, die von überall im Finder ausgeführt werden kann, um eine neue Textdatei am aktuellen Ordnerspeicherort zu erstellen. Mit ein wenig Einrichtung können Sie also jederzeit und überall problemlos auf die Möglichkeit zugreifen, neue Textdateien zu erstellen. Öffnen Sie die Automator-App auf Ihrem Mac und wählen Sie „Neue „Schnellaktion“ erstellen“. Verwenden Sie die Suchfunktion und suchen Sie nach „AppleScript“. Doppelklicken Sie dann auf oder, um AppleScri auszuführen

Lösung für den Knotenstartfehler: 1. Führen Sie „node xx.js“ direkt im Terminal aus. 2. Fügen Sie das Startup-Element „scripts“ hinzu: {“test“: „echo \“Fehler: kein Test angegeben\“ && Exit 1“ ,“start“: „node service.js“}“; 3. Führen Sie „npm start“ erneut aus.

Fast ein Jahr ist vergangen, seit DJI den Osmo Action 4 (aktuell 299 $ bei Amazon) herausgebracht hat. Seitdem konzentriert sich das Unternehmen auf seine anderen Geschäftsbereiche, darunter neue RS-Kamerakardanringe. Darüber hinaus wurden verschiedene Drohnen wie die Avata eingeführt

Bei der Nutzung des PHP-Frameworks kommt es häufig zu Fehlern wie „PHPFatalerror: Class‘Controller‘notfound“. Diese Art von Fehler hängt normalerweise mit der Benennung, dem Speicherort oder dem Laden von Dateien im Framework zusammen, insbesondere wenn Sie versuchen, Controller zu verwenden. In diesem Artikel werden mehrere gängige Verarbeitungsmethoden zur Lösung dieses Problems vorgestellt. Speicherort der Datei bestätigen Zunächst müssen Sie bestätigen, dass sich die Controller-Datei im richtigen Verzeichnis für das Framework befindet. Zum Beispiel, wenn Sie das Laravel-Framework verwenden
