[英]PHP framework ( Zend, cakephp, symfony ) for asp.net background?
不要把它当作另一个问题的重复。 我也看到了其他问题,但是我主要关心的是不同的问题。
我来自asp.net背景。 我习惯于面向对象的编程。
因此,考虑到我的C#背景,asp.net方法,Windows平台以及我在php上的开始(准备学习任何条件),我应该使用哪个php-framework?
我的最初挖掘偏爱Zend,但我想问一下stackoverflow.com的专家。
关于drupal,wordpress,joomla的相同问题。
还是应该退出php并开始学习Ruby on Rails? ;)
我知道CakePHP使用String
类,并且大多数库都是面向对象的。 我不知道这是否适合您,但是可以尝试一下!
但是您不能在PHP中使用"string".doSomething()
,而必须手动创建实例,例如new String("string")->doSomething()
我倾向于使用的框架是Lithium和CakePHP。
Lithium是从零开始构建的,原生为PHP 5.3+-因此它具有快速而疯狂的效率。 客观地讲,我绝对比Cake,Zend,Symfony,Yii等更喜欢它。此外,Lithium是由负责Cake生存的家伙创建的(起初是Cake3,但与众不同,因此完全分解成自己的项目) )。
锂受到伤害的一个方面是缺乏普通社区。 您可以通过IRC获得相当不错的支持,并且开发人员非常有帮助-但它也没有像Cake和Zend这样的“大男孩”拥有的以下或详尽的文档,这真是令人遗憾。
我对Cake 2感到非常满意,因为它对PHP 5.2.8+进行了许多荒谬的改进(但仍然不是5.3+本机)。 他们还修改了疯狂的约定,以至于它们现在实际上在逻辑上是一致的(在2.0之前,从模型到视图再到控制器,这些约定完全不一致)。 Cake也比Lithium和(甚至)Zend更好地记录下来。
所有这一切说,Zend公司是相当多的现状。 我不再使用它,这是因为它非常缓慢且性能不佳。 但是,当您拥有一个专门为弥补早期PHP版本中的弱点而创建的庞大框架时,就会发生这种情况。 我一直在密切关注Zend 2(目前处于beta版),因为主要重点似乎是努力充分利用PHP 5.3(FYI,它允许使用lambda,魔术方法和各种方式)其他很棒的东西)。
所以我的偏见是:截至目前,锂杀死了其他一切。 不是一点,而是很多。
Cake 2排名第二(未完全优化PHP 5.3)。 我什至没有想到要接触Zend 1.xx,但是一旦Zend 2正式可用并可以生产,它绝对值得一副好看的外观(不幸的是,这可能要等MONTHS了)。
可能需要自己构建此类,具体方法如下:
操作字符串,OO风格-PHP教程| Dream.In.Code
然后,您可以将此类与任何框架或不框架的代码一起使用。 [社论评论:我碰巧是Zend Framework的一部分]
使用适当的自动加载功能,它应该像以下操作一样简单:
$greeting = new MyString('hello')
$upperGreeting = $greeting->toUpper(); // $upperGreeting == 'HELLO'
如果这太麻烦了,那么您可以在类中创建一个静态create()
方法,以便可以轻松地链接它:
$upperGreeting = String::create('hello')->toUpper(); // $upperGreeting == 'HELLO'
我不确定是否有一个与asp有很多相似之处的可靠PHP框架,但是如果使用“面向对象”的参数,我将向您推荐Yii。 它几乎绝对是面向对象的。 它是“大人物”(zend,cake,codeigniter,symphony)中最新鲜的php框架,它建立在PHP 5的顶部,对“面向对象”进行了重大改进。 它适用于ORM。 它具有许多优势,并且发展如此之快。 签出: http : //www.yiiframework.com
顺便说一句,Yii可能是与Rails最相似的php框架,因此您可以在开始之前就了解它。
Agile Toolkit是一个PHP UI框架 ,它带有面向对象的用户界面。 当递归呈现对象时,将生成纯HTML。 jQuery和jQuery UI小部件用于增强输出并实现AJAX。
这是一个简单的代码片段演示,如何实现和增强CRUD:
class page_users extends Page {
function page_index(){
$crud=$this->add('CRUD');
$crud->setModel('User',null,array('id','email','name','status'));
if($crud->grid){
$crud->grid->addColumn('expander','more','More...');
}
}
function page_more(){
$tt=$this->add('Tabs');
$tabs=$this->add('Tabs');
$tab=$tt->addTab('BasicInfo');
$tab->add('MVCForm')->setModel('User')->loadData($_GET['id']);
$tabs->addTabURL('../password','Password');
$tabs->addTabURL('../activity','Activity');
$tabs->addTabURL('../engage','Engage');
}
}
接口基于jQuery UI CSS Framework,因此可以使用Themeroller进行主题设置。 与HTML,JS或AJAX的交互由Agile Toolkit处理,但可以增强或由开发人员替换。 仅上面的代码将产生以下结果:
对象结构经过精心设计,可用于大型Web项目。 Agile Toolkit已获得OpenSource许可。
另请参阅: atk4
我是这个很棒的工具包的作者之一。
PHP无法以这种方式工作。 PHP使用。 如果是字符串(“ string 1”。“ string 2”),则表示串联。 您可能想要寻找一个支持链接的框架,即$ a()-> b()-> c();,但是即使那样,您仍然必须以“ PHP方式”调用本机函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.