繁体   English   中英

用于asp.net背景的PHP框架(Zend,cakephp,symfony)?

[英]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许可。

另请参阅:

我是这个很棒的工具包的作者之一。

PHP无法以这种方式工作。 PHP使用。 如果是字符串(“ string 1”。“ string 2”),则表示串联。 您可能想要寻找一个支持链接的框架,即$ a()-> b()-> c();,但是即使那样,您仍然必须以“ PHP方式”调用本机函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM