SlideShare une entreprise Scribd logo
1  sur  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)

Contenu connexe

Tendances (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
 

Similaire à 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
 

Similaire à 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
 

Dernier

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 

Dernier (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 

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)

Notes de l'éditeur

  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