safrazik / breeze.server.php

Breeze JS support for PHP applications
MIT License
29 stars 11 forks source link

Project Status: 🚨 Unmaintained 🚨

This project is no longer maintained. We will not be accepting pull requests, addressing issues, nor making future releases.

breeze.server.php

Featured in Official BreezeJS docs

This project is a PHP library that facilitates building Breeze JS compatible backends using Doctrine

Features:

Doctrine

a well documented, feature rich and popular Object Relational Mapper for PHP which supports several database systems

Why use Doctrine? (extracted from doctrine website)

Currently this library supports Doctrine ORM only. Future versions should support Doctrine MongoDB ODM too.

Some of the Doctrine Types are converted into Breeze Data Types

Built in Doctrine types with their breeze equivalent types

JMS Serializer

a powerful serialization library for PHP. Provides more control over your serialized results. e.g: if you want to exclude a property from returned results, you may use the @Exclude annotation. Read the documentation to find out more.

Symfony Validator Component

(Optional, if you want to support validation) a powerful validation service for PHP with out of box support for Doctrine.

Please note that, by using the Symfony components, it does not necessarily mean you have to use the full stack symfony framework, since they are decoupled and standalone components.

Some of the Validation Constraints are converted to equivalent breeze validators.

Built in Validation Constraints with their Breeze equivalent validators

Example/Demo

Installation

The library uses composer, the package manager for PHP.

add these lines to your composer.json and run composer update

    "require": {
        "adrotec/breeze.server.php": "dev-master"
    }

Please note that symfony/validator - 2.6+ is required by "adrotec/breeze.server.php" since the library relies on ConstraintViolation::getConstraint() method which is not (yet) available in the older versions.

Usage

The library provides a basic framework to easily bootstrap the API. You may use either Application or StandaloneApplication class.

Using the Application class

/* @var $entityManager instanceof \Doctrine\ORM\EntityManager */
/* @var $serializer instanceof \JMS\Serializer\SerializerInterface */
/* @var $validator instanceof \Symfony\Component\Validator\Validator\ValidatorInterface */

$app = new Adrotec\BreezeJs\Framework\Application(
  $entityManager,
  $serializer,
  $validator
);

$app->addResources(array(
    'Employees' => 'EmpDirectory\Model\Employee',
    'Departments' => 'EmpDirectory\Model\Department',
    'Jobs' => 'EmpDirectory\Model\Job',
));

/* @var $request instanceof \Symfony\Component\HttpFoundation\Request */

$response = $app->handle($request);

Using the StandaloneApplication class


$loader = require 'vendor/autoload.php';

$app = new Adrotec\BreezeJs\Framework\StandaloneApplication();

$app->setConnection(array(
    'driver' => 'pdo_mysql',
    'host' => 'localhost',
    'dbname' => 'employees',
    'user' => 'root',
    'password' => ''
));

// configuring doctrine, serializer and validator
// using xml mappings
$app->addMapping(array(
    'namespace' => 'EmpDirectory\Model',
    'type' => 'xml',
    'extension' => '.orm.xml', // default ".dcm.xml"
    'doctrine' => __DIR__ . '/src/EmpDirectory/config/doctrine', // doctrine directory
    'serializer' => __DIR__ . '/src/EmpDirectory/config/serializer', // [optional] serializer metadata directory
    'validation' => __DIR__ . '/src/EmpDirectory/config/validation.xml', // [optional] validation file
));

// limiting the api to certain classes
$app->addResources(array(
    // Resource name => Class name
    'Employees' => 'EmpDirectory\Model\Employee',
    'Jobs' => 'EmpDirectory\Model\Job',
    'Departments' => 'EmpDirectory\Model\Department',
));

$app->build();

$app->run();

With Symfony 2

There's a bundle for that!