Exporter des classes dans des répertoires
Cet exemple montre comment exporter automatiquement toutes les classes présentes dans un ensemble de répertoires.
Lorsque les classes exportées d'un répertoire n'ont pas de namespace, elles doivent avoir des noms différents, même si elles ne sont pas dans le même sous-répertoire.
The App and Ext classes, without a namespace, are defined in two directories, which are exported to Javascript.
The HTML code.
<div class="row">
<div class="col-md-12" id="hello-text-one">
</div>
<div class="col-md-4 select">
<select class="form-select form-control" id="hello-color-one" name="hello-color-one"
<?= attr()->on('change', rq('App')->setColor(Jaxon\select('hello-color-one'))) ?>>
<option value="black" selected="selected">Black</option>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>
</div>
<div class="col-md-8 buttons">
<button type="button" class="btn btn-primary" <?= attr()
->click(rq('App')->sayHello(1)) ?>>CLICK ME</button>
<button type="button" class="btn btn-primary" <?= attr()
->click(rq('App')->sayHello(0)) ?>>Click Me</button>
<button type="button" class="btn btn-primary" <?= attr()
->click(rq('App')->showDialog()) ?>>Show Dialog</button>
</div>
<div class="col-md-12" id="hello-text-two">
</div>
<div class="col-md-4 select">
<select class="form-select form-control" id="hello-color-two" name="hello-color-two" <?= attr()
->on('change', rq('Ext')->setColor(Jaxon\select('hello-color-two'))) ?>>
<option value="black" selected="selected">Black</option>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
</select>
</div>
<div class="col-md-8 buttons">
<button type="button" class="btn btn-primary" <?= attr()
->click(rq('Ext')->sayHello(1)) ?>>CLICK ME</button>
<button type="button" class="btn btn-primary" <?= attr()
->click(rq('Ext')->sayHello(0)) ?>>Click Me</button>
<button type="button" class="btn btn-primary" <?= attr()
->click(rq('Ext')->showDialog()) ?>>Show Dialog</button>
</div>
</div>
The exported classes
The Jaxon library config
The Jaxon setup code.
<?php
jaxon()->app()->setup(configFile('directories.php'));
The Javascript code is generated from this PHP template.
jaxon.dom.ready(() => {
<?= rq('App')->sayHello(0, false) ?>;
<?= rq('App')->setColor(Jaxon\select('hello-color-one'), false) ?>;
<?= rq('Ext')->sayHello(0, false) ?>;
<?= rq('Ext')->setColor(Jaxon\select('hello-color-two'), false) ?>;
});