我想知道为什么这个框架(QCodo)几乎被遗忘并且完全不受欢迎。
几年前我就开始使用它了,这是唯一让我使用PHP的东西。是的...它的发展陷入困境(这就是为什么现在有更活跃的分支Qcubed)但它仍然是非常好的软件。
其主要优势:
从那以后我想成为时尚并检查Django,但我无法编写基于请求的正常Web应用程序(它感觉不对)。
不信? chess.com是用它写的,当然还有很多其他的。
我的两个问题是:
由于
答案 0 :(得分:33)
我已经使用PHP很多年了,从来没有听说过它。
答案 1 :(得分:17)
Qcodo的创造者从未真正推广过这个框架,因此没有产生大量的追随者。我相信他们创造它主要是为了他们自己的用途,但也提供给其他人。如果您正在寻找代码生成框架,那真是太棒了。它确实有学习曲线。因此,为了充分利用它,最好花时间研究这些例子。
Qcodo在一年多的时间里确实没有积极的发展,并且很快就会有很多机会在Qcodo上继续开发。 Qcodo似乎正在慢慢死去。
Qcodo的分支机构Qcubed正在积极开发中,并且自2008年11月以来一直在使用。它是由Qcodo的用户创建的,他们对Qcodo缺乏进展感到沮丧。如果您刚刚开始,请从这里开始,而不是使用Qcodo。但是使用Qcodo论坛搜索您可能遇到的问题/问题。
Qcodo和Qcubed是很棒的框架。不要因为你没有听说过而打折或低估它们。
答案 2 :(得分:9)
在PHP中模拟ASP.NET或Wicket并不是一件好事。而且,代码风格对我来说并不好看。
$this->btnSavePage = new QButton($this);
$this->btnSavePage->Text = "Save";
$this->btnSavePage->Visible = false;
$this->btnCancelEdit = new QButton($this);
$this->btnCancelEdit->Text = "Cancel";
$this->btnCancelEdit->Visible = false;
匈牙利表示法?我的天啊。我需要创建一个大对象来创建一个按钮?我很重。
答案 3 :(得分:5)
是的,我们在Chess.com上使用它,总体而言对此非常满意。当你每天获得超过一百万的综合浏览量时,试图弄清楚如何/在哪里存储所有这些QFormStates会有问题。每个页面视图都是自己的QFormState!我们通过将所有这些都放入memcache来解决这个问题!它确实有一点学习曲线,但一旦你知道它,你就再也不需要文档了。我实际上完全不再使用QQ,而是在我们的ORM文件中使用所有自定义sql。 QQ不够强大,无法进行大量优化的查询,高度优化的查询比数据库抽象更重要。毕竟,该网站需要运作和快速。这是我们的User类中的一个示例ORM静态方法,用于从数据库加载随机用户(我们曾经使用它来在我们的成员页面上显示随机的“用户聚光灯”)。注意它是如何使用从数据库的,而不是我们的主数据库(自定义构建函数)。它还使用memcache,以便随机用户每10分钟(600s)更改一次。
public static function LoadRandom($blnAvatarRequired = true, $blnForce = false) { $strCacheKey = MyMemcache::QueryToKey("User->LoadRandom()"); if($blnForce || false === ($objUser = MyMemcache::G()->GetQuery($strCacheKey))) { $objDatabase = QApplication::GetSlaveDbConnection(); $DaysAgo = new QDateTime(QDateTime::Now); $DaysAgo->AddDays(-10); //make sure this is an active member // Setup the SQL Query $strAvatarReq = $blnAvatarRequired ? ' and u.has_avatar':''; $strQuery = " select u.* from user u where u.is_enabled=1 and u.create_date > '$DaysAgo' $strAvatarReq order by rand() limit 1 "; // Perform the Query and Instantiate the Result $objDbResult = $objDatabase->Query($strQuery); $objUser = User::InstantiateDbRow($objDbResult->GetNextRow()); MyMemcache::G()->SetQuery($strCacheKey, $objUser, null, 600); } return $objUser; }
答案 4 :(得分:5)
我们在3个项目中使用Qcubed和Qcodo,这些是我们曾经拥有的最干净,最容易维护的项目!这是很棒的东西,很容易理解。 只需进入代码,您就不需要太多手册了。
Qcubed社区目前要强大得多,所以你可能想在Qcodo论坛上查看基本问题的答案,但是在Qcubed论坛上发帖。
我们将继续留在这个梦幻般的产品和社区!
此致 TRONICS
答案 5 :(得分:4)
不,我从来没有听说过。
我听说的主要是Zend,CakePHP,Symfony,Code Igniter,还有一两个其他的我不记得的名字。
答案 6 :(得分:2)
我一直在做PHP开关工作大约3年,从未听说过。要求任何人命名PHP框架,你会得到通常的嫌疑人:Code Igniter,Cake,Zend等。
猜猜QCodo开发人员需要进行一些营销工作!
答案 7 :(得分:2)
两年前我开始使用它。亲:
缺点:
目前,Grails似乎是最好的框架,非常面向DDD,可以使用任何现有的Java代码,良好的模板库,可以使用不同的js框架,构建在Hibernate和Spring之上。使用Grails可以编写简单的Web应用程序或财务应用程序。
我希望将来不要使用PHP,但是因为我知道Qcubed / Qcodo,如果有必要,我会使用它。对于新手,我推荐Symfony,更大的社区,插件,功能丰富,它有一个更安全的未来。
更新
我可以继续,但我认为你明白了。只需学习Rails或Grails几个月,然后让我知道你的想法。
我正在将我的Qcodo项目转移到Rails,我有一个很棒的环境,很好的社区,网络上的大部分创新都是围绕着Ruby和Rails。 Rails已被多次评选为最佳Web开发工具,并且是唯一可以替代Java或.net
的工具答案 8 :(得分:2)
我已经使用QCodo 2年了,现在我和QCubed一起使用。
这是开发和维护Web应用程序的好方法,也是部署代码和测试代码的最简单方法。请记住,QCubed现在正在逐渐被接受,这对所有QCodo社区都有好处。
我认为框架可以节省大量的开发时间,但在很多情况下,不建议您使用所有的Web开发。
答案 9 :(得分:1)
我从beta 2开始就一直在使用QCodo,现在我是QCubed的核心贡献者,所以是的,我听说过它。
最初让我了解框架的是代码生成。我来自asp.net和codesmith,并且很高兴找到一个框架,它给了我asp.net的事件驱动方法和代码生成器的代码生成。
我也很喜欢它是纯粹的OO PHP,这意味着我不需要学习一种新语言来开发我的PHP应用程序,并且自定义框架的任何方面都不像我想要的那样简单。< / p>
所有这一切使我们能够创建一个易于维护和强大的学习管理系统,我们已经出售给许多财富500强企业并为其提供主机。
存在一些缺点,例如ORM方法的运行时开销,但代码的可读性和干净的布局导致能够更轻松地简化应用程序的其他方面,并显着缩短开发时间,并且产生的虫子数量。
由于QCubed是一个社区驱动的项目,任何人都可以提交门票,建议改进或讨论变更,项目进展非常明确,并且对建设性反馈持开放态度。
为了捍卫这里所说的一些消极的事情,我只想指出大多数所谓的“问题”的门票从未创建过。我鼓励任何遇到任何人的人请为我们创建一张票,以便我们查看http://qcu.be。
答案 10 :(得分:1)
虽然我听说过它(Qcodo ......不是这个叉子)但我从未考虑过使用它。有大量的框架,只有这么多的需求。公关和思想共享在这种情况下非常重要,而且Qcodo也从未真正拥有过。现在我已经找到了一把,我没有时间,也没有兴趣开始学习新的框架。
答案 11 :(得分:1)
我使用QCodo / QCubed已有1。5年了。从我自己的框架开始,在某些时候看起来很混乱。那是我开始寻找更成熟的框架的时候。幸运的是我找到了QCodo。从那时起,我甚至从未考虑过寻找别的东西。该框架非常灵活和强大,您可以随心所欲地完成所有工作。
我几乎没有使用事件驱动架构的经验。因此,开始有点困难,因为可用的文档很少。但社区本身非常活跃,您可能会在1-2天(有时甚至是几小时)内回答您的新手问题。但目前文档级别更好,社区更活跃:)
我无能为力。如果我有一些问题/建议,我会尝试与核心开发人员讨论。在没有建设性讨论的情况下抱怨事情是蹩脚的。
我现在已经将QCodo / QCubed用于3-4个成功的项目。我使用它越多,我就越喜欢它:)而且,每当我有空余时间,我都会尝试帮助开发更好的框架。我可以说,我已经有超过10个人,我已经说服他现在开始使用QC;)我希望还会有更多人。
QCubed完全是岩石!
答案 12 :(得分:1)
此游泳日志使用mySwimLog
答案 13 :(得分:1)
好的,这是我想要讲述的关于这个Qcodo / Qcubed的事情:
当我想开始我正在开展的项目时,我调查了所有这些并通过维基百科文章登陆Qcodo网站,然后登陆Qcubed ......我很惊讶。
我最喜欢的功能:
您说身份验证支持?好吧,我在1天内创建了一个与Qcubed集成的版本。它与其他框架一起节省了一周的学习成果。 Qcubed rocks。
是的,我讨厌它的缓慢发展。但我认为它即将完成! (可能我知道的东西太少了,但我能想象的东西似乎通过Qcubed解决了。)我希望它更受欢迎...我会在登陆他们的网页之前为我节省一周的搜索时间。
答案 14 :(得分:0)
我也来自dotNet / Codesmith环境。当我选择一个想要将dotNet站点翻译成PHP的项目时,我寻找了一个能够最好地模拟原始应用程序逻辑设置方式的框架。我发现的是膨胀的框架或框架,它们没有完全满足项目要求。
我在研究使用MyGeneration工具进行PHP代码生成时偶然发现了QCodo。从那以后我没有回头。易用性,快速构建复杂应用程序的能力以及真正的OO方法QCodo现在使用QCubed使其成为我的目的的最佳框架。
答案 15 :(得分:0)
我一直在使用QCodo,ZCodo和现在的QCubed已经有一段时间了。
我实际上选择它作为CakePHP的替代品,在我需要的时候,它还不够成熟,无法做我想要的事情。
我对它作为一个框架非常满意;它抽象的东西足够,但不会太多,以至于你忽略了编程。
我打算将它用于我将来负责的任何开发项目,我期待QCubed成为PHP5中最好的社区维护框架。
答案 16 :(得分:0)
答案 17 :(得分:0)
从未听说过。
已经开了4年以上的PHP
答案 18 :(得分:0)
快速的原因是人气和成功通常不会与技术上最好的一致。我相信任何技术人员都可以提出大量的例子。有很多东西可以促进平庸的解决方案,比如市场营销,先发优势,在一些引起人们注意的领域更好的触摸,在一些备受瞩目的应用程序中使用,或者只是简单的运气。
另一个原因是技术上看起来最好的对于那些做不同事情的人来说可能不会出现。
答案 19 :(得分:0)
我认为QCubed很棒,主要是因为你可以使用Ajax的方式(你不必{j}使用jQuery)。
答案 20 :(得分:0)
4年前我选择了QCodo来开发我们的产品。我从来没有后悔 - 现在我们有3个开发人员,任何非OOP解决方案都行不通。我们已经安装了近50个客户 - 在Apache,IIS,我的SQL和SQLServer平台,Linux或W2003上。 F 设计非常出色,代码生成很棒,而且开发,扩展和维护非常简单。我现在无法阅读任何其他代码...
是的,营销很差,项目过去只依赖于创作者(Mike Ho)。所有这些都最近转移到Git,营销应该很快就会好转。而且,现在Mike Ho回来了!!!
答案 21 :(得分:0)
我在很少涉及Flash远程处理的项目中使用它,但我只在框架中使用ORM,因为我不喜欢像.NET这样的EDP。对于无状态网络来说,流程似乎并不正确。如果ORM可以作为单独的组件发布,那就太好了。
答案 22 :(得分:-2)
qcubed社区不是那么熟练地开展一个有新想法的项目
无意义
新代码不在Mike Ho的水平。
无意义
qforms状态的错误,qcodo / qcubed的形式。
...
不受欢迎。
那是什么
他们不想继续使用DSL和正向工程。
你的观点?每个不想走你路线的框架都是错的?我不想要你提出的建议
表单仅适用于启用js。
你一定是在开玩笑吗?如果用户没有启用JS,那么他们就处于石器时代......
是用PHP编写的。
无评论
新的插件系统设计不佳。
根据你的意思?我也会对此说废话
显然,这张海报有一些隐藏的议程......我也仔细看过Symphony--我每次都会和QCubed一起讨论Symphony。对于大型应用程序或小型
答案 23 :(得分:-2)