Jak na autoload neo4j Clienta v nette 2.4

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JindraK
Člen | 2
+
0
-

Ahoj všem,
hraju si s Nette 2.4 a potřebuji do Mapperu dostat závislost na Neo4j Clienta. Hraju si s tím celý den a nemůžu na to příjít…

Client pro Neo4j: https://github.com/…j-php-client

Moje třída:

<?php

namespace App\Model
use \GraphAware\Neo4j\Client\ClientInterface;

class BoardMapper
{
   public function __construct(ClientInterface $neo4j) {
   }
}

?>

Databáze se vytváří pomocí create:

<?php
  ClientBuilder::create()
  ->addConnection('default', 'http://neo4j:password@localhost:7474')
  ->build();
?>

Co jsem zkoušel:

1. přidat třídu co config.neon

services:
neo4j:
class: \GraphAware\Neo4j\Client\ClientInterface
create: \GraphAware\Neo4j\Client\ClientBuilder::create()
setup:
 – addConnection(‚default‘, 'http://neo4j:password@localhost:7474')
 – build()

jenže to nejde, protože návratová třída z metody create() není ClientInterface. Pokud to změním na ClientBuilder, tak to projde, ale ClientInterface není nikde definovaný, takže tu metodu Nette ani nezavolá.

Pak jsem zkoušel zaregistrovat přímo do DI v bootstrapu:

<?php

$container->addService('neo4j', function ($container) {
    return ClientBuilder::create()
        ->addConnection('default', 'http://neo4j:password@localhost:7474')
        ->build();
});
?>

Což sice také projde, ale stejně to pak hlásí chybu v mé třídě, že není definována závislost ClientInterface.
Čiže je super, že si můžu registrovat přímo vlastní služby do containeru, ale jak je pak volat?

Pročetl jsem dokumentaci několikrát a nikde jsem nenašel jak na to.

Díky za pomoc
Jindra

Editoval JindraK (12. 2. 2017 20:18)

JindraK
Člen | 2
+
0
-

Hotovo, vyřešeno přes registraci vlastní factory metody:

neo4j:
create: App\Model\Neo4jFactory::create()