SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Anonymous Functions and
    Design Patterns




      When Yin Finally Meets Yang
Overview
Objective
Learn how to use the closures/anonymous functions with the
design patterns
Requirements
 Knowledge of the adapter design pattern
 Knowledge of the observer design pattern
 Knowledge of the intercepting filter design pattern
Estimated Time
12 minutes


                       www.prodigyview.com
Follow Along With A Code
          Example
1. Download a copy of the example code at
  www.prodigyview.com/source.

2. Install the system in an environment you feel
  comfortable testing in.

3. Proceed to examples/data/ClosureDesigns.php
Why Closures
In our previous examples, we implemented the
intercepting filters, observers and adapter design patterns
by calling other classes.

                   That can be overkill

To make things a little faster and easier to write, we can
implement these same design patterns by having them
call anonymous functions.
Our Class
    We are starting this example by creating a class with the 3
    design patterns implemented.
Extend PVStaticObject        Implemented the adapter design pattern




 Implement Filters                         Implement Observer
Results
 We have the design patterns implemented, so lets run the
 method once and see what result we get without using
 any of the patterns.




Very plain and basic, none of the filters or observers had
any affect. Time to make this method a little bit sexier.
Arguments Filter
   Now let’s add a filter to the arguments that are initially coming
   in. Filters with closures are just like regular filters except we
   have to add the option ‘type’ as a closure.


Define the closure          Set the class to filter   Set the method to filter




 Add the closure         Set the type to ‘closure’     Executes on this event
Arguments Filter Part 2
     Next we are going to take adding the anonymous function to
     the next level. Before we defined the function in a variable and
     passed it the method. Lets start adding the function directly into
     the method.

 Class to Add Filter    Method to add filter to      Give the filter a name




                                            Create the anonymous function by
The type as ‘closure’   Add an event        passing it as the parameter
Add the Observer
    Similar to how we added the anonymous function in the
    filter, we are going to add the anonymous function to the
    observer.

Set the name of the event         Make up a name for the anonymous function




Set the options type to closure             Create the anonymous function
Results
Before we add the adapter design pattern, we are going
to test the output when we run the method with the filters
and observers.




We a little magic, we’ve made our output a little bit livelier.
Adapter and Closure
    For our final design pattern, we are going to completely
    override the method by using an adapter and a closure.



The class to add the adapter too             The method to assign the adapter too




                                     The anonymous function in place of the parameter

Set the option ‘type’ to ‘closure’
Results
Remember from our other examples, adding the adapter
will completely override the method. This means the
execution of the code will never reach other design
patterns. The result of adding the adapter will give us this:
Challenge!
This is an optional challenge designed to give you a better
understanding of the design patterns.
1. Look into the source code of the file PVFileManager in the
   core/util/PVFileManager.php.
2. Find the method for writing a file. Notice how it contains the ability
   to use adapters, filters and observers.
3. First apply filters and observers using anonymous functions to the
   method.
4. Then apply an adapter using an anonymous function and write the
   file out yourself.
API Reference
For a better understanding of the Design Patterns, check
  out the api at the two links below.

PVStaticPatterns

PVPatterns


                 More Tutorials
For more tutorials, please visit:

http://www.prodigyview.com/tutorials


                       www.prodigyview.com

Weitere Àhnliche Inhalte

Mehr von ProdigyView

Mehr von ProdigyView (19)

Audio Content Management
Audio Content ManagementAudio Content Management
Audio Content Management
 
File Content Management
File Content ManagementFile Content Management
File Content Management
 
HTML5 Tags and Elements Tutorial
HTML5 Tags and Elements TutorialHTML5 Tags and Elements Tutorial
HTML5 Tags and Elements Tutorial
 
HTML Forms Tutorial
HTML Forms TutorialHTML Forms Tutorial
HTML Forms Tutorial
 
Html Tags Tutorial
Html Tags TutorialHtml Tags Tutorial
Html Tags Tutorial
 
Video Conversion PHP
Video Conversion PHPVideo Conversion PHP
Video Conversion PHP
 
Sending Email Basics PHP
Sending Email Basics PHPSending Email Basics PHP
Sending Email Basics PHP
 
Tools ProdigyView
Tools ProdigyViewTools ProdigyView
Tools ProdigyView
 
Custom Validation PHP
Custom Validation PHPCustom Validation PHP
Custom Validation PHP
 
Basic File Cache Tutorial - PHP
Basic File Cache Tutorial - PHPBasic File Cache Tutorial - PHP
Basic File Cache Tutorial - PHP
 
Understanding Web Cache
Understanding Web CacheUnderstanding Web Cache
Understanding Web Cache
 
Javascript And CSS Libraries
Javascript And CSS LibrariesJavascript And CSS Libraries
Javascript And CSS Libraries
 
PHP Libraries
PHP LibrariesPHP Libraries
PHP Libraries
 
SQL Prepared Statements Tutorial
SQL Prepared Statements TutorialSQL Prepared Statements Tutorial
SQL Prepared Statements Tutorial
 
Database Basics
Database BasicsDatabase Basics
Database Basics
 
Implementing the Adapter Design Pattern
Implementing the Adapter Design PatternImplementing the Adapter Design Pattern
Implementing the Adapter Design Pattern
 
Intercepting Filters Design Pattern
Intercepting Filters Design PatternIntercepting Filters Design Pattern
Intercepting Filters Design Pattern
 
PV Standard Search Query
PV Standard Search QueryPV Standard Search Query
PV Standard Search Query
 
Learning PHP Basics Part 2
Learning PHP Basics Part 2Learning PHP Basics Part 2
Learning PHP Basics Part 2
 

KĂŒrzlich hochgeladen

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
vu2urc
 

KĂŒrzlich hochgeladen (20)

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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
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
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
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
 
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
 
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?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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...
 
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...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 

Anonymous Functions and Design Patterns

  • 1. Anonymous Functions and Design Patterns When Yin Finally Meets Yang
  • 2. Overview Objective Learn how to use the closures/anonymous functions with the design patterns Requirements  Knowledge of the adapter design pattern  Knowledge of the observer design pattern  Knowledge of the intercepting filter design pattern Estimated Time 12 minutes www.prodigyview.com
  • 3. Follow Along With A Code Example 1. Download a copy of the example code at www.prodigyview.com/source. 2. Install the system in an environment you feel comfortable testing in. 3. Proceed to examples/data/ClosureDesigns.php
  • 4. Why Closures In our previous examples, we implemented the intercepting filters, observers and adapter design patterns by calling other classes. That can be overkill To make things a little faster and easier to write, we can implement these same design patterns by having them call anonymous functions.
  • 5. Our Class We are starting this example by creating a class with the 3 design patterns implemented. Extend PVStaticObject Implemented the adapter design pattern Implement Filters Implement Observer
  • 6. Results We have the design patterns implemented, so lets run the method once and see what result we get without using any of the patterns. Very plain and basic, none of the filters or observers had any affect. Time to make this method a little bit sexier.
  • 7. Arguments Filter Now let’s add a filter to the arguments that are initially coming in. Filters with closures are just like regular filters except we have to add the option ‘type’ as a closure. Define the closure Set the class to filter Set the method to filter Add the closure Set the type to ‘closure’ Executes on this event
  • 8. Arguments Filter Part 2 Next we are going to take adding the anonymous function to the next level. Before we defined the function in a variable and passed it the method. Lets start adding the function directly into the method. Class to Add Filter Method to add filter to Give the filter a name Create the anonymous function by The type as ‘closure’ Add an event passing it as the parameter
  • 9. Add the Observer Similar to how we added the anonymous function in the filter, we are going to add the anonymous function to the observer. Set the name of the event Make up a name for the anonymous function Set the options type to closure Create the anonymous function
  • 10. Results Before we add the adapter design pattern, we are going to test the output when we run the method with the filters and observers. We a little magic, we’ve made our output a little bit livelier.
  • 11. Adapter and Closure For our final design pattern, we are going to completely override the method by using an adapter and a closure. The class to add the adapter too The method to assign the adapter too The anonymous function in place of the parameter Set the option ‘type’ to ‘closure’
  • 12. Results Remember from our other examples, adding the adapter will completely override the method. This means the execution of the code will never reach other design patterns. The result of adding the adapter will give us this:
  • 13. Challenge! This is an optional challenge designed to give you a better understanding of the design patterns. 1. Look into the source code of the file PVFileManager in the core/util/PVFileManager.php. 2. Find the method for writing a file. Notice how it contains the ability to use adapters, filters and observers. 3. First apply filters and observers using anonymous functions to the method. 4. Then apply an adapter using an anonymous function and write the file out yourself.
  • 14. API Reference For a better understanding of the Design Patterns, check out the api at the two links below. PVStaticPatterns PVPatterns More Tutorials For more tutorials, please visit: http://www.prodigyview.com/tutorials www.prodigyview.com