Runway
Runway ir CLI lietotne, kas palīdz pārvaldīt jūsu Flight lietotnes. Tā var ģenerēt kontrolierus, parādīt visas maršrutus, palaist AI iestatīšanas palīgus, migrācijas (skeletonā) un vēl vairāk. Tā ir balstīta uz izcilo adhocore/php-cli bibliotēku.
Klikšķiniet šeit, lai skatītu kodu.
Scaffolding komandas ir apzināti saskaņotas ar oficiālo skeleton, lai AI kodēšanas rīki un cilvēki katru reizi iegūtu vienādus ceļus, vārdu telpas un konstruktora injekcijas stilu.
Instalācija
Instalējiet ar composer.
composer require flightphp/runwaySkeleton jau atkarīgs no Runway; izmantojiet php runway no projekta saknes.
Pamata konfigurācija
Pirmo reizi palaižot Runway, tas mēģinās atrast runway konfigurāciju app/config/config.php caur 'runway' atslēgu.
<?php
// app/config/config.php
return [
'runway' => [
'app_root' => 'app/',
'public_root' => 'public/',
// neobligāti; skeleton arī izmanto index_root publiskajai ieejai
'index_root' => 'public/index.php',
],
];PIEZĪME - Sākot ar v1.2.0,
.runway-config.jsonir novecojis par labuapp/config/config.php. Migrējiet arphp runway config:migrate, kad atjaunināt vecākus projektus. Skeleton joprojām var izveidot nelielu.runway-config.jsoncreate-project laikā saderībai; turpmāk dodiet priekšrokurunwayatslēgaiconfig.php.
Projekta saknes noteikšana
Runway ir pietiekami gudrs, lai noteiktu jūsu projekta sakni, pat ja to palaižat no apakšdirektorijas. Tas meklē indikatorus, piemēram, composer.json, .git vai app/config/config.php, lai noteiktu, kur atrodas projekta sakne. Tas nozīmē, ka Runway komandas varat palaist no jebkuras vietas savā projektā!
Lietošana
Runway ir vairākas komandas, kuras varat izmantot Flight lietotnes pārvaldīšanai. Ir divi vienkārši veidi, kā izmantot Runway.
- Ja izmantojat skeleton projektu, varat palaist
php runway [komanda]no sava projekta saknes. - Ja izmantojat Runway kā composer instalētu pakotni, varat palaist
vendor/bin/runway [komanda]no sava projekta saknes.
Komandu saraksts
Visu pieejamo komandu sarakstu varat apskatīt, palaižot php runway komandu.
php runwayPaļaujieties tikai uz komandām, kas faktiski parādās šajā sarakstā jūsu instalācijā (pamata Runway komandas pret projektu specifiskām, piemēram, skeleton migrate).
Komandas palīdzība
Jebkurai komandai varat nodot --help karodziņu, lai iegūtu vairāk informācijas par to, kā izmantot komandu.
php runway routes --help
php runway make:controller --helpŠeit ir daži piemēri:
Kontroliera ģenerēšana
make:controller veido kontroliera skeletu, kas atbilst oficiālajam skeleton izkārtojumam:
| Ceļš | app/Controller/{Nosaukums}.php |
| Vārdu telpa | App\Controller |
| Stils | flight\Engine konstruktora injekcija (bez Flight:: klases ķermenī) |
php runway make:controller MyController
# → app/Controller/MyController.php
# namespace App\Controller;Paredzamās formas piemērs (vienkāršots):
<?php
declare(strict_types=1);
namespace App\Controller;
use flight\Engine;
class MyController
{
protected Engine $app;
public function __construct(Engine $app)
{
$this->app = $app;
}
public function index(): void
{
// piem. $this->app->render('…', […]);
}
}Reģistrējiet to ar klases izsaucamajam, lai Dice varētu izveidot kontrolieri:
// app/config/routes.php
use App\Controller\MyController;
$router->get('/mine', [MyController::class, 'index']);Kāpēc šis izkārtojums? Mapes reģistram jāatbilst vārdu telpai (Controller nevis controllers) Composer PSR-4 Linux sistēmām — skatiet Autoloadēšanu. Tas pats ceļš ir tas, ko root un scoped AGENTS.md faili saka AI rīkiem izmantot, lai ģenerētie un rokām rakstītie kontrolieri paliktu identiski.
Vecākā dokumentācijā un kopienas projektos dažreiz tika izmantots
app/controllers/unapp\controllers. Tas joprojām ir derīgs, ja jūsu kokā joprojām tiek izmantotas mazie burti mapēm. Jauni skeleton projekti un pašreizējāmake:controllerizvade izmantoapp/Controller/+App\Controller.
Active Record modeļa ģenerēšana
Vispirms pārliecinieties, ka esat instalējis Active Record spraudni.
php runway make:record usersOficiālajā skeleton modeļi atrodas app/Model/ ar vārdu telpu App\Model, un DB savienojums ir SimplePdo (injicējiet to vai nododiet ActiveRecord konstruktoram). Ģenerētie failu nosaukumi/vārdu telpas seko Runway pašreizējiem noklusējumiem un jūsu runway konfigurācijai — dodiet priekšroku jaunu modeļu saskaņošanai ar App\Model, lai tie atbilstu autoloadēšanai un AGENTS.md.
Oficiālā skeleton posts demonstrācijas modelim atbilstošs piemērs:
<?php
declare(strict_types=1);
namespace App\Model;
use flight\ActiveRecord;
/**
* @property int $id
* @property string $title
* // …
*/
class Post extends ActiveRecord
{
protected array $relations = [];
public function __construct($databaseConnection)
{
parent::__construct($databaseConnection, 'posts');
}
}Ja vecāks ģenerators joprojām izvada app/records / app\records, varat saglabāt šo konvenciju mantojuma lietotnēs vai pārvietot failus uz app/Model/ un atjaunināt vārdu telpu, lai atbilstu mapes reģistram.
Migrācijas (skeleton)
Oficiālais skeleton nodrošina projekta komandu (atklātu no app/commands/), piemēram:
php runway migrateMigrācijas ir SQL faili zem migrations/ (piemēram, YYYYMMDDHHMMSS_apraksts.sql SQLite un …_apraksts.mysql.sql MySQL), izvēlēti no jūsu datu bāzes draivera konfigurācijas / vides. Precīzi karodziņi un uzvedība ir noteikta šajā projekta komandā — palaidiet php runway migrate --help savā lietotnē.
AI palīgi
Runway atklāj AI orientētas komandas, kas tiek izmantotas ar AI un izstrādātāja pieredzi:
php runway ai:init
php runway ai:generate-instructionsTās saglabā LLM akreditācijas datus un ģenerē projekta instrukcijas (galvenokārt AGENTS.md). Skeletonā uzskatiet AGENTS.md (un scoped kopijas zem app/) plus SECURITY.md par patiesības avotu aģentiem.
Visu maršrutu parādīšana
Tas parādīs visus maršrutus, kas pašlaik ir reģistrēti ar Flight.
php runway routesJa vēlaties skatīt tikai specifiskus maršrutus, varat nodot karodziņu maršrutu filtrēšanai.
# Parādīt tikai GET maršrutus
php runway routes --get
# Parādīt tikai POST maršrutus
php runway routes --post
# utt.Pielāgotu komandu pievienošana Runway
Ja veidojat pakotni Flight vai vēlaties pievienot savas pielāgotās komandas savam projektam, varat to izdarīt, izveidojot src/commands/, flight/commands/, app/commands/ vai commands/ direktoriju savam projektam/pakotnei. Ja nepieciešama turpmāka pielāgošana, skatiet zemāk esošo sadaļu par konfigurāciju.
Skeletonā projekta komandas atrodas app/commands/ ar vārdu telpu App\Command. Runway tās atklāj pēc ceļa; saglabājiet šo mapi sinhronizētu ar Composer classmap/PSR-4, kā jūsu projekts jau dara.
Lai izveidotu komandu, vienkārši paplašiniet AbstractBaseCommand klasi un īstenojiet vismaz __construct metodi un execute metodi.
<?php
declare(strict_types=1);
namespace App\Command;
use flight\commands\AbstractBaseCommand;
class ExampleCommand extends AbstractBaseCommand
{
/**
* Konstruktor
*
* @param array<string,mixed> $config Konfigurācija no app/config/config.php
*/
public function __construct(array $config)
{
parent::__construct('make:example', 'Izveidot piemēru dokumentācijai', $config);
$this->argument('<funny-gif>', 'Smieklīgā gif nosaukums');
}
/**
* Izpilda funkciju
*
* @return void
*/
public function execute()
{
$io = $this->app()->io();
$io->info('Veido piemēru...');
// Dariet kaut ko šeit
$io->ok('Piemērs izveidots!');
}
}Skatiet adhocore/php-cli dokumentāciju, lai iegūtu vairāk informācijas par to, kā izveidot savas pielāgotās komandas Flight lietotnē!
Konfigurācijas pārvaldība
Tā kā konfigurācija ir pārvietota uz app/config/config.php sākot ar v1.2.0, ir dažas palīgfunkcijas konfigurācijas pārvaldīšanai.
Skeleton padoms: Saglabājiet
config.phpkā burtiskas PHP vērtības. Noslēpumi pieder.env. Izvairieties no$_ENV[...]izteiksmēmconfig.phpiekšpusē —config:setpārraksta šo failu kā statiskus datus un varētu iebāzt noslēpumus failā. Skatiet Konfigurāciju.
Vecās konfigurācijas migrēšana
Ja jums ir vecs .runway-config.json fails, varat viegli migrēt to uz app/config/config.php ar šādu komandu:
php runway config:migrateKonfigurācijas vērtības iestatīšana
Varat iestatīt konfigurācijas vērtību, izmantojot config:set komandu. Tas ir noderīgi, ja vēlaties atjaunināt konfigurācijas vērtību, neatverot failu.
php runway config:set app_root "app/"Konfigurācijas vērtības iegūšana
Varat iegūt konfigurācijas vērtību, izmantojot config:get komandu.
php runway config:get app_rootVisas Runway konfigurācijas
Ja nepieciešams pielāgot Runway konfigurāciju, varat iestatīt šīs vērtības app/config/config.php. Zemāk ir dažas papildu konfigurācijas, kuras varat iestatīt:
<?php
// app/config/config.php
return [
// ... citi konfigurācijas vērtības ...
'runway' => [
// Šeit atrodas jūsu lietotnes direktorija
'app_root' => 'app/',
// Šis ir direktorijs, kur atrodas jūsu root index fails
'index_root' => 'public/',
// Tie ir ceļi uz citu projektu saknēm
'root_paths' => [
'/home/user/different-project',
'/var/www/another-project'
],
// Bāzes ceļi visticamāk nav jākonfigurē, bet tas ir šeit, ja vēlaties
'base_paths' => [
'/includes/libs/vendor', // ja jums ir patiešām unikāls ceļš jūsu vendor direktorijai vai kaut kam citam
],
// Galīgie ceļi ir atrašanās vietas projektā, kur meklēt komandu failus
'final_paths' => [
'src/diff-path/commands',
'app/module/admin/commands',
],
// Ja vēlaties vienkārši pievienot pilnu ceļu, dariet to (absolūts vai relatīvs pret projekta sakni)
'paths' => [
'/home/user/different-project/src/diff-path/commands',
'/var/www/another-project/app/module/admin/commands',
'app/my-unique-commands'
]
]
];Konfigurācijas piekļuve
Ja nepieciešams efektīvi piekļūt konfigurācijas vērtībām, varat tām piekļūt caur __construct metodi vai app() metodi. Ir arī svarīgi atzīmēt, ka ja jums ir app/config/services.php fails, šie pakalpojumi arī būs pieejami jūsu komandai.
public function execute()
{
$io = $this->app()->io();
// Piekļūt konfigurācijai
$app_root = $this->config['runway']['app_root'];
// Piekļūt pakalpojumiem, piemēram, varbūt datu bāzes savienojumam
$database = $this->config['database']
// ...
}AI palīgu ietvari
Runway ir daži palīgu ietvari, kas atvieglo AI komandu ģenerēšanu. Varat izmantot addOption un addArgument veidā, kas jutās līdzīgi Symfony Console. Tas ir noderīgi, ja izmantojat AI rīkus savu komandu ģenerēšanai.
public function __construct(array $config)
{
parent::__construct('make:example', 'Izveidot piemēru dokumentācijai', $config);
// Mode arguments ir nullable un noklusēti kā pilnībā neobligāti
$this->addOption('name', 'Piemēra nosaukums', null);
}Skatiet arī
- Instalācija - Skeleton koks un create-project noklusējumi
- Autoloadēšana -
App\un mapes reģistrs - Atkarību injekcija - Dice + Engine injekcija ģenerētajiem kontrolieriem
- AI un izstrādātāja pieredze -
ai:init,ai:generate-instructions,AGENTS.md - Active Record - Modeļi, kas izmantoti ar
make:record/ skeletonApp\Model - SimplePdo - DB savienojums, ko izmanto skeleton migrācijas un modeļi