barcodex / kashevar
Kasha应用程序和组件生成器
Requires
- php: >=5.3.2
- barcodex/temple: *
- phpunit/phpunit: 4.5.*
This package is not auto-updated.
Last update: 2024-09-28 17:59:55 UTC
README
Kashevar是基于Kasha框架构建的Web应用程序生成器。
它提供了与Rails或Symfony相同原则的基本脚手架。虽然它远未达到功能完整性的同一水平,但它做到了它应该做的事情。
尽管它构建了Kasha应用程序,但它并不依赖于Kasha框架,在composer.json中找到的唯一依赖是用于运行测试的PhpUnit。
这个名字有什么奇怪的?
'Kasha'在俄语中意为“粥”。准备粥的人被称为'kashevar'。
所以,当kashevar准备一些kasha时,这突然变得很有逻辑。
## 生成应用程序的目录结构
Kasha应用程序的整体文件夹结构看起来像这样
/
/app
/app/cache
/app/modules
/app/modules.translation
/vendor/
/web
/web/assets
根文件夹包含单个文件,这些大多是各种配置文件,其中许多不应该存放在版本控制之下。
文件夹“app”及其内容用于存储所有应用程序文件——控制器代码、模型类和视图——组织成模块。由于预期视图将使用不同的语言,因此存在“modules.translation”文件夹来存储所有视图的翻译。最后,“cache”用于存储在请求之间框架重用的所有类型的项目——如果使用基于文件系统的缓存的话。
Kasha框架完全兼容Composer,因此“vendor”文件夹包含所有框架组件以及kasha自身或基于kasha的应用可能拥有的任何依赖。逻辑上,“composer.json”文件应位于根文件夹中。
当使用kashevar生成应用程序时,它还会创建包含kasha依赖的composer.json,因此生成的应用程序根文件夹中的快速composer update已经带来了kasha的所有依赖。
基于Kasha的应用程序还具有除Composer提供的之外的一个额外的自动加载,它总是在'app/modules'目录下的文件夹内搜索类。这允许我们作为应用程序创建者引入和使用新类,而无需在出现新类时更新Composer。
最后,模块('/app/modules'的最近子目录)也有一个预期的结构
/
/actions
/sql
/templates
/dict
/classes
控制器代码存储在"actions"下的"action"文件中。与许多其他框架不同,kasha不使用类来定义控制器——这是通过文件名(归功于命名约定)在已知路由时快速找到代码来实现的。
视图存储在始终具有.html扩展名的文件中,位于'templates'下。
模型类预计将在'classes'文件夹中找到。它们都扩展了Kasha\Model\Model类,该类为与各种模型一起工作提供了一些有用的抽象。
设计上,kasha在数据库访问方面不太灵活——即使模型类提供了一些实用的抽象,在某些情况下,简单的查询是不够的,需要自定义SQL代码。基于ORM的框架发明了自己的查询语言来做这件事,但kasha选择了简单的方法,允许原生地编写特定于数据库的查询,牺牲了更改后端(而且想法是在95%的情况下,数据库在整个系统的生命周期中都不会更改)的灵活性。
生成过程
建议搭建 kasha 应用程序的方法是打开一个终端窗口,切换到 kashevar 文件夹,然后输入一条命令(为了举例,假设应用名称为 "blog")
php generate.php app:create blog
随后,您将进入交互模式并被提问一些问题。生成器需要这些信息来准备应用程序的基本配置和基本框架。