220 likes | 381 Views
The PHP 5 “for developers” Rapid Application Development Framework Make A Byte, inc. What is AgilePHP?. PHP 5 rapid application development framework. Encourages industry standards and best practices during development.
E N D
The PHP 5 “for developers” Rapid Application Development Framework Make A Byte, inc
What is AgilePHP? • PHP 5 rapid application development framework. • Encourages industry standards and best practices during development. • Incorporates and supports “agile” software development methodologies where possible. • 100% Object Oriented (OOP) and introduces easy to implement Aspect Oriented Programming (AOP) features. • Enables PHP developers to build very robust, highly structured rich internet applications in a very short time period. • No complicated or home-grown templating system to learn. Rely on the web technologies you already know and work everywhere you go.
What’s a Framework? • A framework is a basic conceptual structure used to solve or address complex issues. • A software development framework is a re-usable design for a software system (or subsystem). It may include support programs, code libraries, a scripting language, or other software to help develop and glue together the different components of a software project. Various parts of the framework may be exposed through an API. http:://en.wilipedia.org/wiki/Framework
AgilePHP Features • Model-View-Control (MVC) • Object Relational Mapper (ORM) • Identity Management • Scope Management • Annotations • Interceptors • Client Side Remoting • Dynamic Form Builder • Cryptography • Internationalization • Validation • File Upload • PHPUnit Integration • OpenAppstore Integration
Identity Management • Create/Update/Delete users. • Role based access (programmatically or by using interceptors). • Handles sending forgot password emails and generating new passwords. • Integrated with AgilePHP SessionScope component. • Integrated with AgilePHP RequestScope component to guard against XSS and CSFR attacks. • By default stores username, password, created, last login, role, and session id. Can be easily extended to support custom attributes.
Scope Management • “Scope” refers to a context within the web application. • “SessionScope” stores user specific data in a database where its state is kept between page requests. This makes clustering your application very easy and gives developers a secure means of accessing session data. • “RequestScope” helps protect against XSS, CSFR, and SQL Injection by sanitizing HTTP POST input and verifying request authenticity. • “ApplicationScope” stores stateful information available to all running instances of a web application. State is kept on the local file system in the server temp directory.
Annotations • META data for PHP code • Annotate Classes • Annotate Properties • Annotate Methods • Extends PHP Reflection API • No instantiation required • Enables AOP in PHP • Solve cross-cutting concerns • Foundation for AgilePHP Interceptors
Interceptors • “Intercept” class loading, property set/get and method calls. • Use a class level “#@Interceptor” annotation to create an interceptor. Use a method level “#@AroundInvoke” annotation to cause the method to be invoked during the interception. • Captures the “invocation context” at the point in time PHP executes the requested operation, and passes this context into the “interceptor” for further processing. • AgilePHP is the only PHP framework to offer interceptors.
Dependency Injection with Interceptors • Completely eliminates cross-cutting concerns and increases portability of objects. • Reduces the amount of pluming code required to wire up an object (and its initial state).
Client Side Remoting • AgilePHP comes with a client side library that makes it easy to build AJAX enabled web applications with PHP. • AgilePHP.Remoting uses AgilePHP.XHR under the covers. • Remoting allows PHP objects to be called directly from JavaScript, using native objects. • Remote PHP Wobjects can be invoked in both stateful and stateless contexts. • Remoting can be performed in both Asynchronous and Synchronous modes.
Dynamic Form Builder • Automated form generation based on a domain model. • BaseModel MVC classes provide helper methods for rendering forms using XSLT out of the box. • Forms get rendered with an AgilePHP request token by default to guard against CSFR attacks. • Render forms to HTML, JSON, and XML. • AgilePHP.XHR.formSubmit will automatically submit generated (and custom) forms with all their input fields to a specified URL.
Cryptography • Provides hashing and private/public key cryptography. • Makes storing secure data within your application easy. • Provides helper methods for common algorithms and exposes the underlying PHP ‘hash’ function which can be used to set application specific algorithms. • Configurable via agilephp.xml or using code at run time.
i18n (Internationalization) • Translate your PHP application to any language you wish. • Uses the GNU “gettext” utility suite which can be enabled within PHP using the –with-gettext configuration option. • Uses industry standard .PO and .MO files for translation. • Works well with GUI based translation tools for gettext, such as POEdit, for both Windows and Linux.
Validation • Assists with maintaining data integrity. • Check your user input to make sure they match certain criteria. • The validation component still needs to be integrated with the ORM framework. • The validation component is still in development, feel free to contribute.
File Upload • Single file upload. • Multiple file uploads. • Object Oriented. • For example….
PHPUnit Integration • The AgilePHP “generator” package is a series of PHPUnit tests that help you create, build, and deploy your PHP web application. • Encourages unit testing. • Encourages Test Driven Deployment (TDD) which is in alignment with agile software development practices. • Catch bugs caused by adding/modifying code before you deploy to production. • Make your application robust.
OpenAppstore Integration • OpenAppstore is a Make A Byte open source Platform as a Service (PaaS) solution. • OpenAppstore was built specifically for jHosting, AgilePHP, and other future Make A Byte products which have a “pluggable” or Service Oriented Architecture (SOA). • AgilePHP downloads application components directly from the Make A Byte community AppStore. • Promotes sharing and code re-use. • The secret to the light-weight nature of AgilePHP.