Readme.ru.md русское оисание
composer require symbiotic/full
Pour un travail plus rapide sur l'hébergement sans optimisation PHP, construisez dans un fichier symbiotique / intégral
Le cadre a été créé pour simplifier l'intégration de petites applications indépendantes dans d'autres CMS et cadres, ainsi que pour étendre les fonctionnalités des packages de compositeurs.
L'idéologie est un écosystème distinct de petites applications pour la collaboration avec d'autres cadres et l'intégration pratique de fonctionnalités supplémentaires.
Il existe de nombreux packages et applications écrites séparément qui offrent des fonctionnalités utiles, ont leur propre logique commerciale et ont parfois même leur propre interface Web séparée.
Dans Laravel Packages, dans Symfony Bundles, dans divers CMS sous forme de plugins et de modules complémentaires, tous ont leur propre implémentation de routage, d'événements, de mise en cache, etc. Un package écrit pour Laravel pour intégrer un autre cadre ou CMS sera problématique dans la plupart des cas, et dans certains cas impossibles en raison de certaines dépendances à l'égard du cadre.
Les développeurs d'applications eux-mêmes doivent écrire des adaptations pour chaque cadre et CMS, ce qui crée beaucoup de problèmes et ne couvre pas tous les écosystèmes.
De plus, ces applications doivent faire diverses intégrations dans le système:
Ces applications incluent:
Le cadre est optimisé pour fonctionner avec une grande quantité d'applications, ainsi que pour fonctionner comme sous-système pour le cadre principal.
Chaque application est un package compositeur, avec une description supplémentaire directement dans le fichier composer.json.
// If you are already using the framework, then you need to enable the symbiosis mode in the config
// In this mode of operation, the framework will respond only to requests related to it and will not block work for "other" requests.
$ config [ ' symbiosis ' ] = true ;Le cadre est connecté à partir du compositeur directement à votre index.php.
$ basePath = dirname ( __DIR__ ); // root folder of the project
include_once $ basePath . ' /vendor/autoload.php ' ;
include $ basePath . ' /vendor/symbiotic/full/src/symbiotic.php ' ;
// Then the initialization code and the work of another framework can go on when the symbiosis mode is enabled...
//.... $laravel->handle();
$ basePath = dirname ( __DIR__ ); // root folder of the project
include_once $ basePath . ' /vendor/autoload.php ' ;
$ config = include $ basePath . ' /vendor/symbiotic/full/src/config.sample.php ' ;
//.. Redefining the configuration array
// Basic construction of the Core container
$ core = new Symbiotic Core Core ( $ config );
/**
* When installing the symbiotic/full package, a cached container is available
* Initialization in this case occurs through the Builder:
*/
$ cache = new Symbiotic Cache FilesystemCache ( $ config [ ' storage_path ' ] . ' /cache/core ' );
$ core = ( new Symbiotic Core ContainerBuilder ( $ cache ))
-> buildCore ( $ config );
// Starting request processing
$ core -> run ();
// Then the initialization code and the work of another framework can go on when the symbiosis mode is enabled...
// $laravel->handle(); Le schéma minimum de la description de l'application dans le fichier composer.json:
{
"name" : " vendor/package " ,
"require" : {
// ...
},
"autoload" : {
// ...
},
"extra" : {
"symbiotic" : {
"app" : {
// Application ID
"id" : " my_package_id " ,
// Routing provider
"routing" : " \ MyVendor \ MySuperPackage \ Routing " ,
// Basic namespace for application controllers
"controllers_namespace" : " \ MyVendor \ MySuperPackage \ Http \ Controllers "
}
}
}
}
{
"name" : " vendor/package " ,
"require" : {
// ...
},
"autoload" : {
// ...
},
// Adding a description of the package for the symbiotic
"extra" : {
"symbiotic" : {
// Package ID
"id" : " my_super_package " ,
// Application description, the package may not have an application section
"app" : {
// Application ID, specified without the prefix of the parent application
"id" : " image_optimizer " ,
// ID of the parent application (optional)
"parent_app" : " media " ,
// Application name, used in the application list and menu
"name" : " Media images optimizer " ,
// Routing class (optional)
"routing" : " \ MyVendor \ MySuperPackage \ Routing " ,
// Basic namespace for controllers (optional)
"controllers_namespace" : " \ Symbiotic \ Develop \ Controllers " ,
// Application providers (optional)
"providers" : [
" MyVendor \ MySuperPackage \ Providers \ AppProvider "
],
// Application container class (optional)
// Heir from \Symbiotic\App\Application
"app_class" : " MyVendor \ MySuperPackage \ MyAppContainer "
},
// Folder with static relative to the package root (will be accessible via the web) (optional)
"public_path" : " assets " ,
// Folder with templates and other resources (not accessible via the Web) (optional)
"resources_path" : " my_resources " ,
// Framework Core Extensions
// Bootstrappers (optional)
"bootstrappers" : [
" MyVendor \ MySuperPackage \ CoreBootstrap "
],
// Providers (optional)
"providers" : [
" MyVendor \ MySuperPackage \ MyDbProvider "
],
// Exclusion of kernel providers (optional)
"providers_exclude" : [
// Exclusion of providers from downloading
// For example, with two packages of the same library, it allows you to exclude unnecessary
],
// Event subscribers (optional)
"events" : {
"handlers" : {
"Symbiotic \ Form \ FormBuilder" : " MyVendor \ MyApp \ Events \ FilesystemFieldHandler " ,
"Symbiotic \ Settings \ FieldTypesRepository" : " MyVendor \ MyApp \ Events \ FieldsHandler " ,
"Symbiotic \ UIBackend \ Events \ MainSidebar" : " MyVendor \ MyApp \ Events \ Menu "
}
},
//Package settings fields (optional)
"settings_fields" : [
{
"title" : " Fields group 1 " ,
"name" : " group_1 " ,
"collapsed" : 0 ,
"type" : " group " ,
"fields" : [
{
"label" : " Field 1 " ,
"name" : " filed_name_1 " ,
"type" : " text "
},
{
"label" : " Select 1 " ,
"name" : " select_1 " ,
"type" : " select " ,
"variants" : {
"value1" : " title1 " ,
"value12" : " title2 "
}
},
{
"label" : " Boolean checkbox " ,
"name" : " debug " ,
"description" : " Debug mode " ,
"type" : " boolean "
}
]
}
],
// Default settings (optional)
"settings" : {
"filed_name_1" : " demo_value " ,
"select_1" : " value12 " ,
"debug" : " 0 "
},
// Console commands (optional)
"commands" : {
"worker" : " MyVendor \ MyApp \ Commands \ Worker " ,
"stop" : " MyVendor \ MyApp \ Commands \ Stop "
}
}
}
}
Lors de la configuration de l'application, vous ne pouvez pas spécifier des chemins de travail pour les statistiques et les ressources, les chemins par défaut seront définis.:
Les modèles doivent toujours être dans le répertoire /view/ dans le dossier Ressources!
Tous les packages du cadre peuvent être divisés en plusieurs catégories logiques:
Tout package peut combiner tout ce qui précède.
Il n'y a pas de structure obligatoire claire, vous pouvez en utiliser n'importe qui. Si vous créez une application basée sur le package Composer (bibliothèque), pour éviter la confusion, il est recommandé de mettre tout le code pour l'application dans le dossier src/Symbiotic .
vendor/
-/my_vendor
-/my_package_name
-/assets - Public files
-/js
-/css
-/...
-/resources - Resources
-/views - View templates
-/...
-/src - php code
-/Http
-/Cоntrollers
-/...
-/Services
...
-/Routing.php
-/composer.json