豌豆框架0.6正式发布
[color=#339966]豌豆框架(英文名叫Wonderful Framework): [/color]是一个PHP开发框架, 支持PHP5以上版本, 它是免费的, 开源的, 是基于BSD协议发行的.
是具有灵活的, 可扩展的, 可配置的, 组件化的框架结构. 采用面向对象的设计理念, 同时又支持传统的面向过程的, 在HTML中直接嵌入PHP代码的开发方式.
支持MVC模式, 能让程序员更好的与美工合作, 甚至美工不需要会PHP.
PhpTagLib, Action等等, 这些技术能开发者更好的开发出强大的分层设计构架.
集成有单元测试/对象模仿功能, 还有依赖注入构架, 更好的支持敏捷开发.
框架多处参考了JAVA中的技术, 并对这些技术更一步发挥.
框架还有很多不足之处, 还需不断完善, 欢迎多提意见, 如有什么问题, 请向我们反馈. 欢迎你的参与!
特点:
* 灵活, 扩展性强, 复用性高, 完全采用面向对象设计, 并带有一些有用的类库.
* 依赖注入, 实现了IoC构架, 为开发者更好的降低类的依赖性.
* 地址映射, 这是框架的基础, 开发者可以自己定义匹配地址, 并映射到专门的类中运行.
* 标签引擎, PhpTagLib是框架中重要的MVC实现, 允许开发者定义像HTML/XML这样的标签, 实现组件化开发.
* Action模块, 强大的数据处理构架, 支持采用标签方式调用, 支持多个Action合并使用.
* 迭代器, 扩展增强PHP的迭代器(Iterator)接口, 并融合进框架中的其它模块.
* 数据库, 对PEAR DB的重新封装, 支持同时连接多个数据库, 并提供通过标签直接查询.
* 分页类, 数据分页和分页导行分开, 可更好的扩展分页, 基于迭代器可以对任何数据的迭代器分页.
* 缓存, 提供统一的缓存构架, 开发者可以方便的扩展, 支持通过缓存标签缓存页面中的内容.
* 测试引擎, 支持TDD开发方法, 敏捷开发的必需品, 支持单独运行一个测试用例, 也支持运行测试组.
* 对象模仿, 不仅可以Mock指定的类/接口, 还可以Mock父类以分离父类进行测试.
* PlainObject, 支持写一个普通的类, 不继承任何类, 不实现任何接口, 可直接用做标签类或Action类使用.
* 传统页面, 可以直接访问传统的PHP页面, HTML页面, 图片, 脚本等等文件.
* 单一入口, 可以在入口程序中设置框架环境.
* 调试, 支持更详细的错误/异常提供, 支持提示环境中的一些信息.
* XML格式的配置文件, 使配置更直观, 灵活.
* 自带有PEAR中的一些基本和常用的类库.
* 免费的, 开源的. 使用BSD开源协议发行, 你可以用在任何项目中.
框架网站: http://www.wonderfulproject.cn
Google Code: http://code.google.com/p/wonderfulframework
示例: http://www.wonderfulproject.cn/door.php/example.php
相关文章:
PhpTagLib的MVC分层设计
迭代器(Iterator)和分页(Page)类库介绍
框架中Action的特性: 组件和组合
在框架中使用FCKEditor
趁过年时, 有些时间发布个新版本.
本框架主要定位在系统开发方面, 提供了些敏捷方面的技术.
随着框架在实际项目中不断应用和实践, 整体的构架已经趋向稳定, 且在易用性上也做了些改进.
将来框架会继续完善构架, 丰富各个库(类库, 标签库, Action库, Validator库), 增强易用性, 增加控制平台, 提高效率等等方面.
------解决方案--------------------
文档在那里?文档在那里?
------解决方案--------------------
大致看了一下demo
你的框架不太适合php
1、框架连autoload都没实现,要知道在PHP中引用包含文件是件很麻烦的事情。
2、MVC没看到M和V嘛,那个“PhpTagLib”算作V的话实在有点勉强
3、Action的参数很复杂呀――“WDF_ActionForm & $form, WDF_ActionErrors & $errors”,要知道没有IDE或工具自动生成代码的话,参数是越简单越好的。
4、输出用$this->response->writeln,这也太复杂了吧。$this->output不是挺好
5、XML格式的配置文件可以直接用PHP Array实现,,可读性也不差,PHP本身就是动态脚本,应该好好利用这个特点。
6、获取action参数要用$form->getValue,是不是复杂了点?
public function process(string $username) { ... } 这样最好了
这个框架实在太中规中矩了,要知道PHP是低效的动态脚本语言,不像java/C#,这样的框架不适合PHP
------解决方案--------------------
首先我还没看过源代码,所以有些所提问题的不周之处还请谅解。
> 1、框架连autoload都没实现,要知道在PHP中引用包含文件是件很麻烦的事情。
>这个很早我就在想要怎么加入? 我是这样考虑的, autoload要怎么知道要载入哪个文件呢? 通过类命名规则? 那类名会很长呀! 也许可以用命名空间, 但PHP5.3才支持命名空间, 但这样的话其实命名还是很长, 除非使用别名, 别名会比include方便多少呢?
一般通过类名实现autoload,根据优先级,到各个目录下寻找有无对应的包含文件,如果有同名类,可以用类似using(...);的函数来设置一个全局标记,告诉autoload应该优先到哪个目录加载。
实现autoload,主要依赖lib的目录组织,如果组织得好,会大大便于实现autoload。
-----------------
> 3、Action的参数很复杂呀――“WDF_ActionForm & $form, WDF_ActionErrors & $errors”,要知道没有IDE或工具自动生成代码的话,参数是越简单越好的。
>嗯, 我也认同参数越简单越好, 但这已经是最简单了, 这两个参数对象已经把主要的数据进行归类了.
为啥不把$form作为controller的成员,而要作为参数传递?
为啥不采用php内置的异常处理?class ActionException extends Exception { ... }
throw new ActionException(...);
--------------
> 6、获取action参数要用$form->getValue,是不是复杂了点?
> public function process(string $username) { ... } 这样最好了
> 不会最好, 反而更糟. 一个username一个参数, 那还有其它的数据呢? 有一个增加一个, 只会更糟.
我的意思是这样:
public function process(string $username) { ... }
$username是必要参数,缺少则controller报错
public function process(string $username = null) { ... }
则表明$username是可选参数
页面传递的其余参数仍然可以通过$form来访问

PHP仍然流行的原因是其易用性、灵活性和强大的生态系统。1)易用性和简单语法使其成为初学者的首选。2)与web开发紧密结合,处理HTTP请求和数据库交互出色。3)庞大的生态系统提供了丰富的工具和库。4)活跃的社区和开源性质使其适应新需求和技术趋势。

PHP和Python都是高层次的编程语言,广泛应用于Web开发、数据处理和自动化任务。1.PHP常用于构建动态网站和内容管理系统,而Python常用于构建Web框架和数据科学。2.PHP使用echo输出内容,Python使用print。3.两者都支持面向对象编程,但语法和关键字不同。4.PHP支持弱类型转换,Python则更严格。5.PHP性能优化包括使用OPcache和异步编程,Python则使用cProfile和异步编程。

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP在现代化进程中仍然重要,因为它支持大量网站和应用,并通过框架适应开发需求。1.PHP7提升了性能并引入了新功能。2.现代框架如Laravel、Symfony和CodeIgniter简化开发,提高代码质量。3.性能优化和最佳实践进一步提升应用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP类型提示提升代码质量和可读性。1)标量类型提示:自PHP7.0起,允许在函数参数中指定基本数据类型,如int、float等。2)返回类型提示:确保函数返回值类型的一致性。3)联合类型提示:自PHP8.0起,允许在函数参数或返回值中指定多个类型。4)可空类型提示:允许包含null值,处理可能返回空值的函数。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

SublimeText3汉化版
中文版,非常好用

Dreamweaver Mac版
视觉化网页开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器