2017 © Pedro Peláez
 

library exar

EXAR - an AOP Framework for PHP

image

techdev-solutions/exar

EXAR - an AOP Framework for PHP

  • Tuesday, April 7, 2015
  • by viktorwidiker
  • Repository
  • 13 Watchers
  • 30 Stars
  • 72 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 7 Forks
  • 2 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

exar-framework

A lightweight AOP layer for PHP., (*1)

Installation

The simplest way to use Exar is to install it via Composer., (*2)

Create a composer.json file in your project root and define the dependency:, (*3)

{
    "require": {
        "techdev-solutions/exar": "dev-master"
    },
    "minimum-stability": "dev"
}

Install Composer in your project:, (*4)

curl -s http://getcomposer.org/installer | php

Tell Composer to download and install the dependencies:, (*5)

php composer.phar install

Now you are ready to code with Exar!, (*6)

Creating a simple PHP application using Exar

Create a package with a PHP class (e.g. /lib/MyProject/Person.php) that will become AOP features provided by Exar:, (*7)

namespace MyProject;

/**
 * @Exar
 */
class Person {
    private $firstName;
    private $lastName;

    public function __construct($firstName, $lastName) {
        $this->firstName = $firstName;
        $this->lastName = $lastName;
    }

    /**
     * @Track
     */
    public function setFirstName($firstName) {
        $this->firstName = $firstName;
    }

    public function getFirstName() {
        return $this->firstName;
    }

    public function getLastName() {
        return $this->lastName;
    }
}

Create index.php file in the project root which will be the main file of your application:, (*8)

/** load Composer dependencies */
require_once 'vendor/autoload.php';

/** add your class directory (where MyProject/Person.php is) to the include path */
set_include_path(dirname(__FILE__) . '/lib/' . PATH_SEPARATOR . get_include_path());

/** register namespaces that will be loaded by Exar (the namespace of Person.php) */
Exar\Autoloader::register(dirname(__FILE__) . '/_cache', array('MyProject'));

$person = new MyProject\Person('John', 'Smith');
echo 'first name = '.$person->getFirstName() . PHP_EOL;
echo 'last name = '.$person->getLastName() . PHP_EOL;

$person->setFirstName('Jim');
echo 'first name = '.$person->getFirstName() . PHP_EOL;
echo 'last name = '.$person->getLastName() . PHP_EOL;

Now run index.php and see the console output:, (*9)

first name = John
last name = Smith
Before invocation: MyProject\Person->setFirstName (03.07.2014 11:45:48)
After returning: MyProject\Person->setFirstName (03.07.2014 11:45:48)
After invocation: MyProject\Person->setFirstName (03.07.2014 11:45:48)
first name = Jim
last name = Smith

What happened?, (*10)

You created a Person object and printed the first and the last name. After that, you set the first name again. Since the method setFirstName is annotated with @Track, Exar intercepts the method execution and invokes the correspondent interceptor code. In this case, @Track just echoes the class and the name of the intercepted method, with the current timestamp. This example shows how Exar works: It adds functionality to your PHP classes on the basis of annotations within docblocks., (*11)

Stay tuned for more docs and examples!, (*12)

The Versions

07/04 2015

dev-master

9999999-dev http://www.exarphp.com

EXAR - an AOP Framework for PHP

  Sources   Download

MIT

The Requires

 

by Viktor Widiker, techdev Solutions UG

php aop

09/01 2015

v0.1.0

0.1.0.0 http://www.exarphp.com

EXAR - an AOP Framework for PHP

  Sources   Download

MIT

The Requires

 

by Viktor Widiker, techdev Solutions UG

php aop