php source&instance(源&副本)的代码结构

以前做的一个网站,有分站需求,一个北京分站,一个上海分站。分别使用两个路径:
localhost/bj/
localhost/gz/
当时是使用 phpcms2008 进行搭建,直接复制了两份源代码,每个分站是一个 phpcms2008 。
这种结构一个维护操作(比如修正bug)就得在两份源代码中各做一次。

所以希望可以多个分站都使用同一套源代码。

实际上,phpcms v9 就好像支持多个站点发布,但是因为已使用 phpcms2008 ,所以想从代码结构上下手进行改造。

phpcms2008 属于多入口,即不同的功能通过浏览器直接请求不同的 php 实现,如果使用单一入口,就能通过不同的入口让一套源代码使用不同的数据库,实现一个程序多个分站。
PHP 单一入口的特有作用

若需要在某个分站中加入某个功能,其它分站不需要,那单一入口也无法应付。于是,设想出了下列复杂的“源&副本”代码结构。

可以共用的代码放在一个目录下,就像 thinkphp 框架放在一个目录可以被多个应用使用,称为“源”目录。
各个分站独有的代码放在各个分站自己的目录下,称为“副本”目录。
“源”使用 source 这个单词,缩写为 sour 。“副本”使用 instance (实例)这个单词,缩写为 inst. wow 中“副本”就是用这个单词。

这个结构使用的是单一入口,一个分站如果不需要定制独有的功能,只需要添加一个入口文件即可。源代码目录结构如下:

/sour/ :“源”目录。
/inst/ :“副本”目录。
/inst2/ :第二个“副本”目录。
/inst3/ :第三个“副本”目录。
...

源与副本目录的结构一样。比如需要定制源目录中某个模块的某个控制器,只需要在自己的副本目录相同的路径定制源代码,入口调度器会优先调用副本中的代码。
(这种效果受 phpcms v9 的启发)

这实在是一个看上去很美的代码结构。但是在试实现的过程中,发现这个结构实现起来非常麻烦。
具体遇到的问题就是路径问题,使用这个结构,实际上就是要用 PHP 手工把物理路径不同的两个文件夹(源与副本)中的文件在逻辑上合并成一个文件夹,查找文件时先从副本中找,找不到再到源中找。
由于要解决路径这个问题就已经很麻烦,所以没在继续实现下去。

后来回想了一下需求,发现其实单一入口已经能应付大部份“分站”这样的情况,实在需要在某个分站定制功能,也不需要这么复杂的解决方法。
所以,最后放弃这种代码结构。本文谨作记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值