SlideShare una empresa de Scribd logo
1 de 11
Seattle PHP User’s Group
September 12, 2013 – LightningTalk
Joel Simpson
 15+ yrs professional software engineering
and consulting experience (~6 yrs with PHP)
 Founder, CEO of Alegion®
 Enterprise Crowdsourcing as a Service
 Lover of Open Source Software (and PHPStorm)
 ..and far too many interests than would fit readably on this slide:
Alegion, sailing, go/weiqi/igo/baduk, micro-controllers and electronics, shakuhachi, settlers of catan
style board games, 3d modeling/rendering/printing, science, technology, start-ups, philosophy, process
engineering, soccer, mountain biking, snow boarding, hiking, obstacle course racing (Spartan), Zen.
 It’s Meta
 PHP 4, the early predecessors, built in methods:
 method_exists()
 class_exists()
 is_a()
 is_subclass_of()
 get_parent_class()
 class_exists — Checks if the class has been defined
 get_called_class — the "Late Static Binding" class name
 get_class_methods — Gets the class methods' names
 get_class_vars — Get the default properties of the class
 get_class — Returns the name of the class of an object
 get_declared_classes — Returns an array with the name of the defined classes
 get_declared_interfaces — Returns an array of all declared interfaces
 get_declared_traits — Returns an array of all declared traits
 get_object_vars — Gets the properties of the given object
 get_parent_class — Retrieves the parent class name for object or class
 interface_exists — Checks if the interface has been defined
 is_a — Checks if the object is of this class or has this class as one of its parents
 is_subclass_of — Checks if the object has this class as one of its parents
 method_exists — Checks if the class method exists
 property_exists — Checks if the object or class has a property
 trait_exists — Checks if the trait exists
Source: http://www.php.net/manual/en/ref.classobj.php
 The ReflectionAPI
 http://php.net/manual/en/book.reflection.php
 BIG, comprehensive, but not complex
 Dev-time
 Generating Documentation
 Auto-complete in IDEs
 Run-time
 Request Routing
 ORM/DBAL
 Design Patterns
 Aspect Oriented Programming
 PHP (“duck” typing – no strict types)
http://hyperboleandahalf.blogspot.com
 A function that populates properties automatically for
quickly smoke testing/debugging field mapping in a
class.
 Our example, a User:
 FirstName
 LastName
 UserName
 EmailAddress
 Password
 Annotation Driven Development (ADD)
 Describe/configure right along side the code
 Advanced ExampleChallenge
 Write a rudimentary “frontController” in 100 lines
of code or less
 Implement request routing via annotations
▪ @url /my/route/
 class Router{private static $a=array();static function
route($b){if(count(self::$a)==0){self::loadRoutableClasses();}foreach(self:
:$a as $c){$d=new ReflectionClass($c);foreach($d->getMethods()as
$e){$f=$e->getDocComment();preg_match_all('/@urls+[
t]*/?(S*)/s',$f,$g,PREG_SET_ORDER);if(!$g){continue;}foreach($g[0]as
$h){if(self::cleanUrl($b)==self::cleanUrl($h)){$i=$d-
>newInstance();$j=$e->getShortName();return $i->$j();}}}}return(new
DefaultController())->notFoundAction();}private static function
cleanUrl($b){return strtolower(trim($b,"/"));}private static function
loadRoutableClasses(){foreach(get_declared_classes()as
$c){if(is_subclass_of($c,'Routable')){self::$a[]=$c;}}}}
 Or ~70 lines of readable, commented code. Let’s take a look….
Me
Joel.Simpson@gmail.com | skype: joelrsimpson |
Linkedin.com/in/joelsimpson | http://alegion.com
Presentation
Content
Slides:https://Speakerdeck.com/JoelSimpson
Code: http://bit.ly/1b7Oo5o
Additional
Information
http://php.net/manual/en/book.reflection.php
C:|$ php –r? <name>
Source: http://www.php.net/manual/en/features.commandline.options.php
--rf <name>
• Show
information
about
function
--rc <name>
• Show
information
about class
--re <name>
• Show
information
about
extension
--rz <name>
• Show
information
about Zend
extension
--ri <name>
• Show
configuration
for extension
(“I” ni)

Más contenido relacionado

La actualidad más candente

La actualidad más candente (14)

Packages
PackagesPackages
Packages
 
OOPS Characteristics (With Examples in PHP)
OOPS Characteristics (With Examples in PHP)OOPS Characteristics (With Examples in PHP)
OOPS Characteristics (With Examples in PHP)
 
The smartpath information systems java
The smartpath information systems javaThe smartpath information systems java
The smartpath information systems java
 
Beginners Guide to Object Orientation in PHP
Beginners Guide to Object Orientation in PHPBeginners Guide to Object Orientation in PHP
Beginners Guide to Object Orientation in PHP
 
Learn C# Programming - Classes & Inheritance
Learn C# Programming - Classes & InheritanceLearn C# Programming - Classes & Inheritance
Learn C# Programming - Classes & Inheritance
 
Java Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overridingJava Inheritance - sub class constructors - Method overriding
Java Inheritance - sub class constructors - Method overriding
 
Java notes
Java notesJava notes
Java notes
 
OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android Programming
 
Type theory in practice
Type theory in practiceType theory in practice
Type theory in practice
 
Object Oriented Programming with Java
Object Oriented Programming with JavaObject Oriented Programming with Java
Object Oriented Programming with Java
 
Inheritance and Polymorphism
Inheritance and PolymorphismInheritance and Polymorphism
Inheritance and Polymorphism
 
java tutorial for beginner - Free Download
java tutorial for beginner - Free Downloadjava tutorial for beginner - Free Download
java tutorial for beginner - Free Download
 
Concepts of core java
Concepts of core javaConcepts of core java
Concepts of core java
 
Java basics
Java basicsJava basics
Java basics
 

Similar a Php meetup 20130912 reflection

Framework prototype
Framework prototypeFramework prototype
Framework prototypeDevMix
 
Framework prototype
Framework prototypeFramework prototype
Framework prototypeDevMix
 
Framework prototype
Framework prototypeFramework prototype
Framework prototypeDevMix
 
Class 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingClass 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingAhmed Swilam
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Pythondn
 
Lecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptxLecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptxShaownRoy1
 
java traning report_Summer.docx
java traning report_Summer.docxjava traning report_Summer.docx
java traning report_Summer.docxGauravSharma164138
 
Shuvrojit Majumder . 25900120006 Object Oriented Programming (PCC-CS 503) ...
Shuvrojit Majumder .  25900120006  Object Oriented Programming (PCC-CS 503)  ...Shuvrojit Majumder .  25900120006  Object Oriented Programming (PCC-CS 503)  ...
Shuvrojit Majumder . 25900120006 Object Oriented Programming (PCC-CS 503) ...ShuvrojitMajumder
 
Oops concepts in php
Oops concepts in phpOops concepts in php
Oops concepts in phpCPD INDIA
 
Dependency Injection for PHP
Dependency Injection for PHPDependency Injection for PHP
Dependency Injection for PHPmtoppa
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented ProgrammingIqra khalil
 
Take the Plunge with OOP from #pnwphp
Take the Plunge with OOP from #pnwphpTake the Plunge with OOP from #pnwphp
Take the Plunge with OOP from #pnwphpAlena Holligan
 
Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best PracticesSupun Dissanayake
 

Similar a Php meetup 20130912 reflection (20)

Framework prototype
Framework prototypeFramework prototype
Framework prototype
 
Framework prototype
Framework prototypeFramework prototype
Framework prototype
 
Framework prototype
Framework prototypeFramework prototype
Framework prototype
 
OOP in PHP
OOP in PHPOOP in PHP
OOP in PHP
 
Class 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented ProgrammingClass 7 - PHP Object Oriented Programming
Class 7 - PHP Object Oriented Programming
 
Php oop presentation
Php   oop presentationPhp   oop presentation
Php oop presentation
 
Patterns in Python
Patterns in PythonPatterns in Python
Patterns in Python
 
Lecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptxLecture-10_PHP-OOP.pptx
Lecture-10_PHP-OOP.pptx
 
Reflection-In-PHP
Reflection-In-PHPReflection-In-PHP
Reflection-In-PHP
 
java traning report_Summer.docx
java traning report_Summer.docxjava traning report_Summer.docx
java traning report_Summer.docx
 
Shuvrojit Majumder . 25900120006 Object Oriented Programming (PCC-CS 503) ...
Shuvrojit Majumder .  25900120006  Object Oriented Programming (PCC-CS 503)  ...Shuvrojit Majumder .  25900120006  Object Oriented Programming (PCC-CS 503)  ...
Shuvrojit Majumder . 25900120006 Object Oriented Programming (PCC-CS 503) ...
 
Oops concepts in php
Oops concepts in phpOops concepts in php
Oops concepts in php
 
Dependency Injection for PHP
Dependency Injection for PHPDependency Injection for PHP
Dependency Injection for PHP
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
Php oop (1)
Php oop (1)Php oop (1)
Php oop (1)
 
Lecture 12
Lecture 12Lecture 12
Lecture 12
 
Take the Plunge with OOP from #pnwphp
Take the Plunge with OOP from #pnwphpTake the Plunge with OOP from #pnwphp
Take the Plunge with OOP from #pnwphp
 
Java ppt
Java pptJava ppt
Java ppt
 
OOP Day 2
OOP Day 2OOP Day 2
OOP Day 2
 
Creativity vs Best Practices
Creativity vs Best PracticesCreativity vs Best Practices
Creativity vs Best Practices
 

Último

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 

Último (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 

Php meetup 20130912 reflection

  • 1. Seattle PHP User’s Group September 12, 2013 – LightningTalk Joel Simpson
  • 2.  15+ yrs professional software engineering and consulting experience (~6 yrs with PHP)  Founder, CEO of Alegion®  Enterprise Crowdsourcing as a Service  Lover of Open Source Software (and PHPStorm)  ..and far too many interests than would fit readably on this slide: Alegion, sailing, go/weiqi/igo/baduk, micro-controllers and electronics, shakuhachi, settlers of catan style board games, 3d modeling/rendering/printing, science, technology, start-ups, philosophy, process engineering, soccer, mountain biking, snow boarding, hiking, obstacle course racing (Spartan), Zen.
  • 3.  It’s Meta  PHP 4, the early predecessors, built in methods:  method_exists()  class_exists()  is_a()  is_subclass_of()  get_parent_class()
  • 4.  class_exists — Checks if the class has been defined  get_called_class — the "Late Static Binding" class name  get_class_methods — Gets the class methods' names  get_class_vars — Get the default properties of the class  get_class — Returns the name of the class of an object  get_declared_classes — Returns an array with the name of the defined classes  get_declared_interfaces — Returns an array of all declared interfaces  get_declared_traits — Returns an array of all declared traits  get_object_vars — Gets the properties of the given object  get_parent_class — Retrieves the parent class name for object or class  interface_exists — Checks if the interface has been defined  is_a — Checks if the object is of this class or has this class as one of its parents  is_subclass_of — Checks if the object has this class as one of its parents  method_exists — Checks if the class method exists  property_exists — Checks if the object or class has a property  trait_exists — Checks if the trait exists Source: http://www.php.net/manual/en/ref.classobj.php
  • 5.  The ReflectionAPI  http://php.net/manual/en/book.reflection.php  BIG, comprehensive, but not complex
  • 6.  Dev-time  Generating Documentation  Auto-complete in IDEs  Run-time  Request Routing  ORM/DBAL  Design Patterns  Aspect Oriented Programming  PHP (“duck” typing – no strict types) http://hyperboleandahalf.blogspot.com
  • 7.  A function that populates properties automatically for quickly smoke testing/debugging field mapping in a class.  Our example, a User:  FirstName  LastName  UserName  EmailAddress  Password
  • 8.  Annotation Driven Development (ADD)  Describe/configure right along side the code  Advanced ExampleChallenge  Write a rudimentary “frontController” in 100 lines of code or less  Implement request routing via annotations ▪ @url /my/route/
  • 9.  class Router{private static $a=array();static function route($b){if(count(self::$a)==0){self::loadRoutableClasses();}foreach(self: :$a as $c){$d=new ReflectionClass($c);foreach($d->getMethods()as $e){$f=$e->getDocComment();preg_match_all('/@urls+[ t]*/?(S*)/s',$f,$g,PREG_SET_ORDER);if(!$g){continue;}foreach($g[0]as $h){if(self::cleanUrl($b)==self::cleanUrl($h)){$i=$d- >newInstance();$j=$e->getShortName();return $i->$j();}}}}return(new DefaultController())->notFoundAction();}private static function cleanUrl($b){return strtolower(trim($b,"/"));}private static function loadRoutableClasses(){foreach(get_declared_classes()as $c){if(is_subclass_of($c,'Routable')){self::$a[]=$c;}}}}  Or ~70 lines of readable, commented code. Let’s take a look….
  • 10. Me Joel.Simpson@gmail.com | skype: joelrsimpson | Linkedin.com/in/joelsimpson | http://alegion.com Presentation Content Slides:https://Speakerdeck.com/JoelSimpson Code: http://bit.ly/1b7Oo5o Additional Information http://php.net/manual/en/book.reflection.php
  • 11. C:|$ php –r? <name> Source: http://www.php.net/manual/en/features.commandline.options.php --rf <name> • Show information about function --rc <name> • Show information about class --re <name> • Show information about extension --rz <name> • Show information about Zend extension --ri <name> • Show configuration for extension (“I” ni)

Notas del editor

  1. 1m - Introduction2m - What is Reflection?2m - What does PHP have for Reflection? (what does the api look like)10m - A cool use case (a very simple, hopefully useful, example - not sure what this should be yet)3m - Overview a short advanced example (e.g. 50 lines of code that implement a front controller to route by annotations on class methods, &quot;specify the url path in the annotation, the method get&apos;s called&quot;), posted to github for those who are interested to review later2m - Close
  2. Tons of stuff