Beispiel #1
0
 /**
  * Do this one last, cause it leaves its callbacks.
  *
  * @depends testHooking
  * @expectedException Exception
  * @expectedExceptionMessage Everything is good.
  */
 public function testTimeline($testModel)
 {
     $that = $this;
     Hook::addCallback('TestModel->testFunction', -1000, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['timeline'] = 1;
     });
     Hook::addCallback('TestModel->testFunction', -100, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(1, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -90, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(2, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -70, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(3, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -30, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(4, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -10, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(5, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -9, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(6, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -8, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(7, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -7, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(8, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -6, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(9, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -5, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(10, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -4, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(11, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -3, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(12, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -2, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(13, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', -1, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(14, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 1, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(15, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 2, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(16, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 3, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(17, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 4, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(18, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 5, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(19, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 6, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(20, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 7, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(21, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 8, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(22, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 9, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(23, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 10, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(24, $data['timeline']);
         $data['timeline']++;
     });
     Hook::addCallback('TestModel->testFunction', 1000, function (&$return, $name, &$object, &$function, &$data) use($that) {
         $that->assertEquals(25, $data['timeline']);
         // Cool, it all worked.
         throw new Exception('Everything is good.');
     });
     $that->assertEquals(27, count(Hook::getCallbacks()['TestModel->testFunction']));
     $testModel->testFunction(true);
 }
Beispiel #2
0
<?php

namespace Nymph;

use SciActive\RequirePHP;
RequirePHP::_('Nymph', ['NymphConfig'], function ($NymphConfig) {
    $class = '\\Nymph\\Drivers\\' . $NymphConfig['driver'] . 'Driver';
    $Nymph = new $class($NymphConfig);
    if ($NymphConfig['pubsub']) {
        \SciActive\Hook::hookObject($Nymph, 'Nymph->');
        \Nymph\PubSub\HookMethods::setup();
    }
    return $Nymph;
});
/**
 * Nymph
 *
 * An object relational mapper with PHP and JavaScript interfaces. Written by
 * Hunter Perrin for SciActive.
 *
 * @package Nymph
 * @license http://www.gnu.org/licenses/lgpl.html
 * @author Hunter Perrin <*****@*****.**>
 * @copyright SciActive.com
 * @link http://nymph.io/
 */
class Nymph
{
    const VERSION = '1.4.3';
    public static function __callStatic($name, $args)
    {
Beispiel #3
0
 /**
  * Create a new instance.
  * @return \Nymph\Entity The new instance.
  */
 public static function factory()
 {
     $class = get_called_class();
     $args = func_get_args();
     $reflector = new \ReflectionClass($class);
     $entity = $reflector->newInstanceArgs($args);
     // Use hook functionality when in 2be.
     if (class_exists('\\SciActive\\Hook')) {
         \SciActive\Hook::hookObject($entity, $class . '->', false);
     }
     return $entity;
 }
Beispiel #4
0
 public static function setup()
 {
     if (!\SciActive\RequirePHP::isdef('NymphPubSubConfig')) {
         \Nymph\PubSub\Server::configure();
     }
     Hook::addCallback('Nymph->saveEntity', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['entity'] = $arguments[0];
         $data['guid'] = $arguments[0]->guid;
     });
     Hook::addCallback('Nymph->saveEntity', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!$return[0]) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => $data['guid'] === $data['entity']->guid ? 'update' : 'create', 'guid' => $data['entity']->guid, 'entity' => $data['entity']->jsonSerialize(false)]));
     });
     Hook::addCallback('Nymph->deleteEntity', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['guid'] = $arguments[0]->guid;
     });
     Hook::addCallback('Nymph->deleteEntity', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!$return[0]) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => 'delete', 'guid' => $data['guid']]));
     });
     Hook::addCallback('Nymph->deleteEntityByID', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['guid'] = $arguments[0];
     });
     Hook::addCallback('Nymph->deleteEntityByID', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!$return[0]) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => 'delete', 'guid' => $data['guid']]));
     });
     Hook::addCallback('Nymph->newUID', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['name'] = $arguments[0];
     });
     Hook::addCallback('Nymph->newUID', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!isset($return[0])) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => 'newUID', 'name' => $data['name']]));
     });
     Hook::addCallback('Nymph->setUID', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['name'] = $arguments[0];
     });
     Hook::addCallback('Nymph->setUID', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!$return[0]) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => 'setUID', 'name' => $data['name']]));
     });
     Hook::addCallback('Nymph->renameUID', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['oldName'] = $arguments[0];
         $data['newName'] = $arguments[1];
     });
     Hook::addCallback('Nymph->renameUID', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!$return[0]) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => 'renameUID', 'oldName' => $data['oldName'], 'newName' => $data['newName']]));
     });
     Hook::addCallback('Nymph->deleteUID', -10, function (&$arguments, $name, &$object, &$function, &$data) {
         $data['name'] = $arguments[0];
     });
     Hook::addCallback('Nymph->deleteUID', 10, function (&$return, $name, &$object, &$function, &$data) {
         if (!$return[0]) {
             return;
         }
         HookMethods::sendMessage(json_encode(['action' => 'publish', 'event' => 'deleteUID', 'name' => $data['name']]));
     });
 }