Enregistrer des répertoires avec des namespaces
- Version 4.x
- Version 3.x
- Version 2.x
Si un répertoire est associé à un namespace, il est possible de l'indiquer lorsqu'il est enregistré avec Jaxon. Le nom des classes javascript prendra ce namespace en compte.
Si on prend un répertoire /the/class/dir
associé au namespace Ns
et qui contient les classes suivantes.
Dans le fichier /the/class/dir/App/FirstClass.php
namespace Ns\App;
class FirstClass
{
public function myMethod()
{
// Function body
}
}
Dans le fichier /the/class/dir/App/SecondClass.php
namespace Ns\App;
class SecondClass
{
public function myMethod()
{
// Function body
}
}
Les classes PHP seront enregistrées ainsi.
use function Jaxon\jaxon;
$jaxon = jaxon();
$jaxon->register(Jaxon::CALLABLE_DIR, '/the/class/dir', ['namespace' => 'Ns']);
Les noms des classes javascript seront Ns.App.FirstClass
et Ns.App.SecondClass
.
Voici le code javascript généré.
Ns = {};
Ns.App = {};
Ns.App.FirstClass = {};
Ns.App.FirstClass.myMethod = function() {
return jaxon.request(
{ jxncls: 'Ns.App.FirstClass', jxnmthd: 'myMethod' },
{ parameters: arguments }
);
};
Ns.App.SecondClass = {};
Ns.App.SecondClass.myMethod = function() {
return jaxon.request(
{ jxncls: 'Ns.App.SecondClass', jxnmthd: 'myMethod' },
{ parameters: arguments }
);
};
Définir les options des requêtes Jaxon
Des options supplémentaires peuvent être passées aux classes lors de leur enregistrement, et ajoutées aux appels en javascript.
Pour cela, il faut passer à l'appel à $jaxon->register()
un tableau dont chaque entrée définit les options d'une classe.
Les entrées sont indexées par le nom des classes javascript, qui dans ce cas est le nom complet de la classe PHP correspondante, avec son namespace.
$jaxon->register(Jaxon::CALLABLE_DIR, '/the/class/dir', [
'namespace' => 'Ns',
'classes' => [
\Ns\App\FirstClass::class => [
'functions' => [
'*' => [
'mode' => "'asynchronous'"
]
]
],
\Ns\App\SecondClass::class => [
'functions' => [
'*' => [
'mode' => "'synchronous'"
]
]
]
]
]);
Voici le code javascript généré.
Ns = {};
Ns.App = {};
Ns.App.FirstClass = {};
Ns.App.FirstClass.myMethod = function() {
return jaxon.request(
{ jxncls: 'Ns.App.FirstClass', jxnmthd: 'myMethod' },
{ parameters: arguments, mode: 'asynchronous' }
);
};
Ns.App.SecondClass = {};
Ns.App.SecondClass.myMethod = function() {
return jaxon.request(
{ jxncls: 'Ns.App.SecondClass', jxnmthd: 'myMethod' },
{ parameters: arguments, mode: 'synchronous' }
);
};