SlideShare uma empresa 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)

Mais conteúdo relacionado

Mais procurados

Mais procurados (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
 

Semelhante 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
 

Semelhante 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

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
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
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 

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 do 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