如果你想开发一个你知道随着时间的推移会变得越来越大的WebApp,你会使用CodeIgniter还是你定制的框架?
您使用开源框架的理由是什么?反对它的论据是什么。
以下是我的想法: CodeIgniter专业人士
CodeIgniter缺点
自定义编码的Framkework专业人士
自定义编码框架缺点
你对此有何看法?我的大脑告诉我要使用CodeIgniter,我的心告诉我要建立自己的框架。
答案 0 :(得分:17)
使用已存在的东西。
为什么CI
为什么要将你的选择限制在一个框架内 - 它使你的选择接近straw man argument你的心并没有告诉你自己编写框架 - 你的自我就是这样。如果你在开始之前消除了大量其他框架 - 你已经开始了很多工作。
CI是一个非常糟糕的单选。
Php在撰写本文时为5.4.0 - 如果您能够选择用于新项目的框架 - 请认真考虑使用使用5.3+功能的框架 - 或者已经在这样做的道路。不要选择具有充满php4样式代码的遗留代码库的框架。
CI缺点
如果我想要成长
,不确定它的可扩展性
最有可能(我不使用或不喜欢代码点火器)比随机自定义框架更具可扩展性。
麻省理工学院许可证
对如何使用MIT许可软件几乎没有限制。将MIT读为“不要删除或修改框架文件中的许可证块”。
自定义编码框架专业人员
可扩展的。我可以决定它会如何发展。
您确定知道可扩展性意味着什么:)
我拥有代码
几乎在所有情况下都是正确的 - 如果您使用MIT许可框架,那肯定是正确的。
灵活的设计
从长远来看,这不太可能是一个好处。例如,您取得了爆炸性的成功,需要引进一个开发团队。您将必须训练每个人如何使用构建应用程序的自定义框架。这不是简单地将它们指向一些教程来克服使用<在此处插入所选框架的名称>的初始学习曲线。
自定义编码框架缺点
需要记录,以便其他人能够进行协作。
实际上,除非你构建一个能够与现有框架竞争的框架(即使有良好的文档)。
需要投入时间来维护框架
不要低估需要多长时间。
意外错误/错误
你会在这里度过很多时间。
总结
我真的想添加单元测试的存在,这样你才能知道你的应用程序是否可行 - 但是代码点火器没有那个,所以如果你对你的两个选择很僵硬,我想你是在无论哪种方式你自己。
答案 1 :(得分:7)
以下是来自CodeIgniter 2.1.0的几个代码片段。看看它们然后告诉我这是2012年php代码的样子:
if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
{
@set_time_limit(300);
}
// -- snip --
$CFG =& load_class('Config', 'core');
// -- snip --
$UNI =& load_class('Utf8', 'core');
// -- snip --
function &get_instance()
{
return CI_Controller::get_instance();
}
// -- snip --
if ( ! isset($active_record) OR $active_record == TRUE)
{
require_once(BASEPATH.'database/DB_active_rec.php');
if ( ! class_exists('CI_DB'))
{
eval('class CI_DB extends CI_DB_active_record { }');
}
}
else
{
if ( ! class_exists('CI_DB'))
{
eval('class CI_DB extends CI_DB_driver { }');
}
}
index.php
的
if (defined('ENVIRONMENT'))
{
switch (ENVIRONMENT)
{
case 'development':
error_reporting(E_ALL);
break;
case 'testing':
case 'production':
error_reporting(0);
break;
default:
exit('The application environment is not set correctly.');
}
}
在PHP 5.4之前,E_ALL
不包含E_STRICT
,这意味着“开发环境”隐藏了一些错误。在生产环境中,所有错误都是ini_set('display_errors', false);
,而不是{{1}},这将是合理的选择。
这应该说明CodeIgniter的高级代码质量......
你首先选择一个有意义的框架,然后开始抛出像“可扩展”和“灵活性”这样的奇特词语。
答案 2 :(得分:4)
我会说已经写好了。我真的不知道CodeIgniter,所以我不能评论它的可伸缩性,但是如果经过一些调查后可扩展性不是你想要的,那么看一下那里存在的其他一些PHP框架。 肯定会有一个你可以建立你的应用程序。
答案 3 :(得分:2)
如果您准备投入时间来构建自己的框架,那么,就像上面提到的大多数人一样,您最终会花费大量时间来修复错误/错误,最重要的是维护它。
在我6年的经验中,我可以告诉你,代码维护不是一个笑话。需要经过深思熟虑,精心策划和努力。当你谈论一个框架时,编写单元测试就变得不可避免了。
您可以投入不到一半的时间来学习使用5.3+或即将推出的新PHP框架。我的建议是:
如果您希望使用遗留代码和原始编程风格,请使用CodeIgniter。但是你绝对可以在CodeIgniter之上构建一个自定义frameowrk并在不改变核心的情况下轻松增强它。你将从CodeIgniter中获得性能,但你将失去许多其他好东西,最重要的是PHP 5.3+提供的新功能,尤其是5.4。
如果您想使用一个使用真正的MVC模式并实施最佳实践的框架(并最终使您成为一个更好,更有纪律的编码器),并使用CakePHP 2.0,并且也会提供良好的性能。有一个庞大的社区,你会发现很多插件/组件已经针对常见问题进行了编码。因此加速发展。
如果你真的想要使用PHP 5.3+的强大功能,那么就可以使用Lithium,具有出色的性能,灵活性和更小的占用空间。如果您对编程比较陌生,这个框架将提供更陡峭的学习曲线。它将强制执行最佳实践,并向您介绍一种新的更好的思维方式。
还有其他很棒的PHP框架。但是,由于我花时间在上面提到的那些,所以我让你知道我的鸟类对这些的看法。
希望有所帮助。
答案 4 :(得分:2)
两者都不。 不要写自己的框架。这是很多的工作,最迟在安全方面它很可能会失败。
另一方面,不要使用CodeIgniter,因为你不能在那里使用任何现代设计模式。请参阅此文章:Why CodeIgniter is dead
答案 5 :(得分:0)
所有开发时间都投入到业务逻辑中。
你忘记了学习曲线。
所有的开发时间都投入到业务逻辑中,是的
但在你开始之前,你必须学习全新的语言,这不是你所知道的PHP,而是完全不同的语言。很多次更大。
可扩展的。我可以决定它会如何发展。
只有你经验丰富,才能知道所有可能的问题 我们都在不断地学习,而且凭借我现在的知识,我会在一年前做出其他一些决定。
对我而言,所有“官方”框架的主要缺点 - 它们都是臃肿的。考虑到兼容性,它们支持数千个可忽略不计的问题,使代码膨胀 如果你想修改代码的某些部分 - 你遇到了麻烦。代码很大,你不知道它。你需要很长时间来学习它。
官方框架对我来说的主要优势甚至不是文档,而是 google。社区。一个叫做Internet的知识库。有时我会使用国内框架感觉“谷歌病”,当我想谷歌解决一些问题时,这是一种身体上的禁欲,但我知道我什么都找不到。
答案 6 :(得分:0)
这实际上取决于你有多雄心勃勃以及你需要花多少时间。我为我的公司开发了一个工作得很好的框架,我们在它上面构建了一个CMS,其中有30个安装在那里,几乎没有问题。 (我们的其他开发人员使用它没有问题,因为他们可以问我什么时候遇到问题,它通常会使调试更容易,因为我知道这就像我的手背。)
但是,不要低估进行和维护它的时间。无论你在开始时如何看待自己的想法,你都会意识到,通过使用它,你总能做出改进。他们过多。最终,这就是为什么我建立了自定义的东西。因为当我遇到新问题时,我可以开发新颖的解决方案,最终以我能够指示的方式提高框架的灵活性。
如果您决定使用第三方选项(实际上通常是最好的主意),请不要使用Code Igniter。它是为PHP 4开发的,非常缺乏功能和一般的OOP风格。
答案 7 :(得分:-1)
如果您想开发WebApp,我建议您:bonfire我觉得它很有用。它基于CodeIgniter框架