oroboros / core
一个微型、可扩展的php和javascript MVC中间件实现,用于快速构建页面、微服务和其他不适合核心应用的外部网络界面,具有最少的依赖和复杂性。
Requires
- php: >= 7.4.16
- bjeavons/zxcvbn-php: ^1.2
- cboden/ratchet: ^0.4.3
- erusev/parsedown: ^1.7.4
- erusev/parsedown-extra: ^0.8.0
- laminas/laminas-diactoros: ^2.5.1
- pda/pheanstalk: ^4.0.3
- php-curl-class/php-curl-class: ^9.1.0
- php-http/guzzle7-adapter: ^1.0
- php-http/message: ^1.11
- php-http/message-factory: ^1.0.2
- predis/predis: ^1.1.7
- psr/cache: ^1.0.1
- psr/container: ^2.0.1
- psr/http-message: ^1.0.1
- psr/http-server-handler: ^1.0.1
- psr/http-server-middleware: ^1.0.1
- psr/log: ^1.1.3
- scssphp/scssphp: ^1.6.0
- supervisorphp/supervisor: ^4.0.0
- swiftmailer/swiftmailer: ^6.2.7
- symfony/dotenv: ^5.3.0-BETA1
- symfony/process: ^5.3.0-BETA1
- twig/twig: ^3.3.0
Requires (Dev)
- kint-php/kint: ^3.3
- kint-php/kint-js: ^2.0
- kint-php/kint-twig: ^3.0
- phpmd/phpmd: ^2.9.1
- phpunit/phpunit: ^9.5.4
- sebastian/phpcpd: ^6.0.3
- squizlabs/php_codesniffer: ^3.6
- symfony/polyfill-iconv: ^1.22.1
This package is auto-updated.
Last update: 2024-09-19 23:08:59 UTC
README
Oroboros是一个强大的跨语言框架,专注于提供统一的、符合标准化的系统,以快速原型设计、开发和部署应用程序、中间件、模块、扩展、服务和有用的工具库。
它为bash、javascript和php提供API,这些API可以独立或相互依赖地工作。每个API的操作顺序都明显相似,允许采取简单、直接的全栈开发方法。用任何一种语言编写的代码对熟悉任何一种语言的人来说都非常熟悉,无论他们是否在那种特定语言上花过时间。
该系统提供强大的工具,可以快速在几个简短的cli单行中布置整个应用程序。其工具集本质上是中立的、符合标准的,与大多数内容兼容无问题。除非明确指示,否则不会假定控制权,因此它可以作为一个资源库、现有系统的包装器、一组互补实用程序或一个完全独立的应用程序堆栈来运行。
要求
硬性要求很少,但支持很多。
- Bash 4.2+ (如果您使用的是cli API。Ksh也应该工作得很好。如果您不使用cli API,则不需要此要求)
- PHP 7.4+ (如果您使用的是php API,bash和javascript无需此要求即可正常工作)
- Node.js (如果您从源代码构建并使用完整的Web堆栈,则需要此要求。如果不这样做,则不需要它)
- Apache 2.4+ (如果您使用完整的Web堆栈。NginX支持将在以后添加。如果您不使用集成Web堆栈,则不需要此要求,除非您的其他依赖项需要它)。
可选要求
- PhantomJS (如果需要,通过Mocha进行无头管道驱动的前端测试)
- MySQL (如果需要,用于模型开发、模型实现、数据库备份管理等。默认Web堆栈功能不需要数据库)
- Bash (或Ksh。如果需要,用于与命令行API同步)
- Redis/Memcached/OpCache (如果需要,用于Psr-6缓存,需要一个或多个)
安装
设置很简单。几乎没有配置要求。运行以下命令来构建包
cd path/to/repo
chmod +x oroboros
npm install
grunt init
基本安装到此结束。
如果您有任何问题,有一个内置的实用程序可以分析您的服务器环境,以查找任何冲突
./oroboros -c -v
,或者如果您更喜欢长格式,可以使用./oroboros --core --verify
。
如果您想全局使用构建和脚手架工具系统,还应运行此命令
ln -s /path/to/oroboros/oroboros /usr/local/bin/oroboros
作为独立应用程序使用
有一个构建工具可以在任何相关的源目录中创建应用程序。
(假设您已将二进制文件链接到上面提到的/usr/local/bin中)
- 在您的webroot中创建一个目录
cd /path/to/your/folder
oroboros build app --namespace="yourvendorname\\yourpackagename", --name="yoursitename" --author="yourname" --path="$(pwd)"
--path
也可以从任何地方任意指定,只要你不在源文件夹中直接工作,只要你的shell用户对指定目录有写权限。
如果你更喜欢交互式shell来选择构建选项
请运行以下命令而不是上述命令
oroboros build app -i
这将引导你通过所有必需和可选设置。
默认情况下,你的应用程序将通过 localhost
访问,或者如果你为它设置了 vhost.conf
文件,则是你配置的名称。
你也可以通过将其放在你的webroot中并为其分配一个自己的 vhost.conf
文件,以相同的方式运行默认的核心实现。
如果你创建了一个应用程序
你可以通过镜像其结构来自由覆盖任何类、配置、环境变量等,也可以添加自己的,这些将被自动拾取。类加载使用Psr-4的一个变体,它为声明的供应商/包命名空间根创建一个优先级排序,这使得你的应用程序可以根据需要覆盖任何类,而不会破坏底层包或执行复杂的注册。所有明确需要预定义类的内部结构都明确包含它们,因此不需要进一步考虑覆盖功能应集成到哪些机制以及不应集成到哪些地方。
同样,配置和环境变量也可以类似地覆盖。只需添加/修改所需的键,其他所有内容都将继承现有的默认值。这在所有配置或环境变量定义的实现中都是一致的。
作为现有应用程序的中件使用
这个包自带了它的PSR-4实现,因此无需将其注册为composer包。你可以这样做,但即使没有这样的依赖关系也能正常工作。
待办 记录中件Psr集成
特性
这个包提供了一些有用的默认特性,在大多数情况下可以与标准化实现互换使用。
PHP特性
- Psr-1兼容。
- Psr-2兼容。
- 独立的Psr-4实现,可以单独使用或与composer一起使用。
- Psr-6实现。
- Psr-7实现。
- Psr-11实现。
- Psr-17实现。
- 提供 Twig 模板集成,可以用作其他模板引擎的替代品,开销很小。
- 提供 Bootstrap 和 Material Design 的干净实现,可以在此基础上构建。
- 提供完整的 Bootstrap 5 实现,通过 Twig 可以完全覆盖、扩展和配置模板。
- 提供WebSocket层。
- 提供数据库迁移/备份/还原/单元测试实用程序。
- 集成PHP和JavaScript的单元测试。
- 提供bash、PHP以及JavaScript的可扩展模块/服务/扩展系统。
计划
- Psr-3 开发中
- ELK堆栈集成
- AWS集成
- 应用程序集群,具有自动发现性
- SSO
后端特性
- 数据库模式自动映射和缓存,包括关系约束、索引、有效的列格式和长度。这使得模型对相关模型自动可发现,无需直接考虑。
- 提供健壮的命令行API,调用方式类似于标准的bash命令,与控制器的交互方式与Web请求相同,并输出正确格式化的控制台视图。两种路由类型(HTTP和CLI)彼此不可访问,以防止引入安全漏洞。
- 通过解析现有的数据层模式自动生成模型。
- 从现有的模型生成数据层模式。对于数据层迁移非常有用。
- 扩展API,可以根据需要向包中添加额外的库、视图、模型、组件等。
- 在应用范围内可以覆盖一切。
- 广泛使用PSR规范。包替换是微不足道的。
- REST API非常简单直接。易于使用和开发。
- 路由和配置范式非常灵活。可以从配置、数据库、Redis、平面文件或任何适合实施的手段提供服务。底层平台只强制格式,不强制其达到该格式的方式。
前端功能
- 自动为所有包含的远程资产注册预加载/预取,以最大化页面速度。
- 模板支持嵌套依赖,并在包含时自动包括注册资产的依赖项。
- 可互换布局。
- 可互换皮肤/配色方案,与所有布局兼容。
- 支持多个前端框架。如果需要,即使在同一页面上也可以使用。
CI功能
以下功能映射到grunt watch
,或可以通过其他grunt命令手动调用。
- 单元测试配置为在文件更改时完全自动化,以检测整个项目中对PHP或JavaScript文件的任何更改。
- 在文件更改时自动运行所有javascript/scss/templates的构建。
- 缓存管理是自动的。
- 仅根据检测到的修改运行相关的grunt任务,这防止了自动化时间过度增长。
- 强制PHP的PSR标准。
- 强制对ES6兼容性的JavaScript的清洁linting。
- 通过PHPUnit进行后端单元测试。
- 通过ESLint和Mocha进行前端单元测试。
设计功能
- 集成SASS支持。
- 集成Compass支持。
- 布局(结构)和设计(皮肤/样式)内在分离。布局和调色板可以自由混合搭配,不会发生冲突。
- 简单、可扩展、健壮的模板。易于理解、扩展或添加。模板中根本不存在任何实际PHP代码。
扩展
待办事项 扩展API目前正在开发中,但尚未完全实现。
测试
使用grunt watch
监控文件更改时,会自动运行PHP的单元测试。
您也可以使用grunt test
手动运行它们。