有大量的PHP框架(即Zend,Seagull,Symfony,CodeIgniter,CakePHP,Yii,Prado)可以很好地实现可扩展/可维护网站的重要部分,我几乎总是选择一个开始构建客户网站。
最近,我开始厌倦了为客户提供持续的开发服务,我正在研究编写更多功能齐全的商业脚本的可能性,这些脚本可以一次又一次地转售,希望找到那些神奇的“经常性的收入流“你总是在童话故事中听到的。请注意,我不是在讨论如何为像Drupal或Joomla这样的CMS系统构建扩展/插件,而是讨论完整的网站脚本。
所以这是我的多部分问题:
多年来我一直在想这个问题,我问过的任何人都没有真正想出一个好的解释。这似乎是禁忌,没有人真正知道为什么?我见过使用第三方库(即jQuery,PHPmailer等)的商业脚本,但我从未见过完全基于应用程序框架构建的脚本。
看起来很多人都错过了这个问题的真实本质,甚至把它当作语言辩论(那些永远不会结束)。
有什么理由说我不能将构建在其中一个框架上的脚本转售为一个完整的交钥匙解决方案(特别是如果框架的许可是非常灵活的,比如BSD许可证)?
假设框架许可证允许它,那么没有理由你不能这样做。您之前提到过Zend Framework,因此您可能有兴趣查看Magento。虽然他们提供免费的社区版本,但他们也有一个与Zend Framework一起使用的付费版本。
我最近使用了一个商业上提供的文件上传脚本,它恰好是在codeigniter上构建的(目前名字让我逃脱)。
如果没有,为什么其他人不做同样的事情呢?
我个人认为,这真的是很多因素的混合。基于Web的内部部署应用市场(与SaaS相关)已经充斥着各种选择,并且开始缩小规模。这对您实际看到后面的框架的应用程序的需求减少(使用SaaS,您很可能永远不会知道使用什么框架)。
PHP市场中许多现有的大型参与者已经存在了一段时间,并且已经拥有自己已经创建并熟悉的代码库。当您花费数年时间构建自己的库时,很难证明移动到另一个框架是合理的。
许多较小的参与者很少在正确的应用程序设计中进行自我教育,并且通常坚持使用程序代码。今天PHP中存在的大OOP功能直到5.0发布才出现。请注意,大约5年前,但是很多程序员已经开始使用他们的PHP教程和学习冒险,然后才能在PHP5上广泛使用并接受标准主机帐户。因此,大多数现代框架都不可用CakePHP作为示例直到2005年才开始.Zend框架直到2007年才出现。这些都是相对较新的日期,我不希望看到很多商业应用程序在移动对他们来说,直到当前一代程序员可以编写高质量的商业应用程序老化一点(再次只是我的意见)。
我不得不衷心地反对back2dos ..
所以我认为您可以开发商业应用程序/脚本。只要确保你给他们不错的支持和文档。你会发现人们都很欣赏并愿意为此付出代价。
最后,就你的问题而言,我同意如果它们基于开源框架,它们将有更好的机会被使用,因为你将开放自己的市场。你可能知道Zend Framework有一个非常开放的许可证,它说你可以卖掉你用它开发的任何东西。
我认为你最重要的问题是第2点,为什么其他人不做同样的事情呢?
有些人是。 Vbulletin已经非常成功地销售论坛软件,尽管可用的免费论坛软件没有尽头。我认为他们的成功部分归功于付费产品。由于他们赚钱,很容易为进一步发展提供资金。开源,免费项目通常需要一个专门的团队来保持发展,因为没有动力的钱。
网上提供的交钥匙解决方案并不缺乏。 eBay将无法获得5美元的脚本 - 它们通常是垃圾并且不受支持。
在我工作的地方,我们为客户开发定制的“一次性”应用程序,但我们正在寻求向其他客户销售相同的应用程序,以此作为扩展业务的机会。在这种情况下,我们谈论的是价值数万的大型项目,但它们只出售给少数客户。
没有理由你不能以50或100美元的价格出售产品并赚钱 - 你只需要卖给10,100或1000个顾客就可以开始以此为生。
并获得免费开放软件的成功?制作一些尚未提供的东西,或做一些比免费提供的东西更好的东西。
最后,您可能要考虑的另一个模型是软件即服务。例如,看看Basecamp(37个信号)。他们的产品不是开源的,你不能下载它,但你在网上注册并支付每月10美元的最低端产品。
他们不必提供源代码,并且他们有固定的经常性收入流。他们有成千上万的帐户。
是的,你当然可以出售它。
大多数人不仅像普通人一样销售脚本,而且企业不知道如何处理这些脚本,因此需要开发人员安装和配置脚本。如果有开源/免费替代品,开发人员将不会购买该脚本。如果脚本执行经常完成的有价值的任务,那么有人可能会复制它并创建一个开源版本。
销售PHP代码的关键是将其作为服务出售。这可能是它的安装和配置(像大多数网页设计/开发代理商)或它的按需版本(想想任何在线商业应用程序)。
我的公司为企业编写和构建了许多PHP软件,当我们获得新客户并解决新问题时,我们将代码编写在可重用的类中,然后我们可以将其打包并出售给其他客户而无需进一步编码 - 我假设是你想要做的。这一切都是可能的,只需要时间和计划编写软件,使其可以重复用于其他项目。
那么在这种情况下我认为codeigniter将是最好的选择,因为:
最诚挚的问候,佩德罗
作为PHP开发人员超过5年并销售脚本我从未尝试用框架开发商业脚本。这只是因为我不是任何PHP框架的忠实粉丝。有人可以说,如果你不使用框架,你就是开发人员的业余爱好者。但我认为这是任何开发者都有权选择的方式。
我认为有些公司不使用框架只是因为他们不喜欢向客户说这个基于'ABC'的脚本。他们想夸耀他们的脚本,只有他们可以开发类似的东西。
我看过目前为止使用过任何框架的商业网页脚本。
我可以想到一个反对它的理由:盗版。如果你的脚本是一堆框架人想要的东西,它将被盗版。如果它只是为了一个丰富的利基,你可以避免这种情况,但那时你不会得到任何童话般的收入。
它不是PHP的开源精神。趋势是放弃它,然后为服务收费。您可能更擅长营销您的脚本,并在他们咨询您并向您提供脚本下载和手册后向他们收费。
我认为,这些是关键原因,为什么没有这样做:
chunk_split
(1966年))...有商业网站在PHP上运行,但我听说没有好的PHP软件/框架,我会支付...总有一个免费的替代品,通常它更好......
你将很难创造出一些东西,这真的值得购买......如果你成功了,你将拥有一个庞大的社区来复制它,如果它值得购买......要么是为了个人商业利润,要么只是提供一个免费的解决方案......
好吧,这就是我的想法... :)
编辑:让我澄清一下我的观点
array_search
,count
和implode
都是数组例程?看看ruby,ecmascript或者Haxe,如果你想看看核心语言API有多漂亮......我会说它设计得很好......但它根本就没有设计......它只是被许多PHP贡献者抛弃在一起......从某种意义上说,你有一个功能,这很酷...重点是,你可能找不到它......好吧,过了一会儿,你会知道这一切...可能......但在其他语言中,例如,在数组是对象的情况下,了解所有核心数组例程并不需要很长时间......
没有真正的哲学......看看上面提到的语言,看看Objective-C或函数语言,如果你愿意,看看语言语义和哲学的一致性,与PHP相比“哦,我们只会扔在另一个函数中,这将解决问题“... PHP数组也是最奇怪的数据结构,我见过......类似于一个带有内部顺序键和值的超级哈希...但是,它不是甚至是一个对象......
很多不安全的代码(很多函数暴露溢出漏洞或者不是二进制安全,或者没有转义,可以用于XSS攻击)...当我读取API参考时,它告诉我什么是函数确实如此,但事实是,我必须考虑很多可能性(长字符串可能会崩溃我的整个系统甚至注入任何代码,nullbytes可能使逃避例程无效,但是当再次打印出字符串时,它们会消失(这是一个strip_tags漏洞,直到不久前)),那就是我所谓的不可靠和危险......
执行速度慢... eaccelerator和类似的扩展可以显着减少启动时间,但执行它自己仍然会很慢...实际的问题是,语言是很宽松的,这会导致很多开销......
PHP被设计为一种脚本语言,将许多C函数捆绑在一起......它经常通过进一步的C函数进行扩展,因为它不是最快的语言...这提供了一个很好的加速...但我怎么知道,功能是否安全?谁能告诉我?我不想通读C行和行来知道...所以我的两个要点:
API太混乱了
该API的背后可能是您的应用程序的严重漏洞!
因此,PHP很难信任......我的意思是,我个人不喜欢Java和ASP.NET,但我不得不承认,它们是值得信赖的平台并且有信心的原因......现在引起凌乱的API的问题是正在被一些框架解决......但是如果一种语言需要一个框架来包装核心API以便有一些可用的东西,那么它是一个良好的,可维护的代码的基础,那么就会出现问题......