
发表日期: 2021-04-26 11:27:49 浏览次数:102
溧阳400电话申请开通【溧阳企业网站建设】溧阳微信公众号小程序开发运营价格、溧阳微信公众号APP软件客户端设计运营、溧阳网页页面设计公司费用、溧阳公司网站制作方案流程改版维护大概需要多少钱
溧阳,隶属江苏省,由常州市代管的县级市 ,位于江苏省西南部,地处长江三角洲,与苏、浙、皖三省接壤。是南京都市圈成员城市 [1] ,宁杭生态经济带上的重要副中心城市和示范区。位于北纬31°09'-31°41',东经119°08'-119°36',东邻宜兴,西与高淳、溧水毗邻,南与安徽省的广德、郎溪接壤,北接句容、金坛,南北长59.06千米,东西宽45.14千米,土地总面积1535.87平方千米。 [2] 溧阳属亚热带季风气候,干湿冷暖,四季分明,雨量充沛,无霜期长,全年平均温度17.5℃,其中:一月份3.2℃,七月份31.1℃。年均降水量1149.7毫米。其中,一月份42.2毫米,七月154.1毫米。大约日照时间,一月份137.6小时,七月份229小时。 [3]
溧阳有耕地面积112万亩,林地32.8万亩,河流和湖泊42.6万亩。物产丰富,是著名的“鱼米之乡”、“丝绸之乡”、“茶叶之乡”,经济连续多年名列全国百强县(市)。溧阳文化属吴越文化,溧阳人属江浙民系使用吴语。盛产稻、麦、油、茶、蚕茧、螃蟹、板栗、西瓜、毛竹等。 [4] 2020年10月9日,被生态环境部命名为第四批“绿水青山就是金山银山”实践创新基地。2020年11月,入选水利部第一批深化小型水库管理体制改革样板县(市、区)名单。2020年12月,社科院发布《全国县域经济综合竞争力100强》,溧阳排名第25 [5] 。
在使用getter时,第一个参数为默认值,即当资源未注册时将返回此默认值。例如:
// 输出默认值 2017echo DI()->getAInt(2017);复制代码
类成员属性
我们还可以通过类成员属性的方式对资源进行设置与获取,这时资源名称需要符合PHP的变量命名要求,即应该以下划线或字母开头,由数字、字母、下划线组成。上面示例,改用类成员属性方式,等效实现如下:
// 直接赋值DI()->aString = 'Hello Dependency Injection!';// 使用类名延迟加载DI()->aObject = 'Simple';// 使用匿名函数延迟加载DI()->aClosure = function(){
return new Simple();};// 获取var_dump(DI()->aString);var_dump(DI()->aObject);var_dump(DI()->aClosure);复制代码使用这种类成员属性的方式获取资源时,不能指定默认值。并且可以看到PhalApi大部分情况下也是使用了这种方式,例如在初始化文件./Public/init.php对各种资源的初始和注册。但当需要指定默认值时,则需要使用前面set/get方法,或setter/getter访问器。
数组形式
对DI设置和获取资源,还有一种方式就是使用数组形式。这时,为了更好地演示,需要使用一个临时变量$di来存放DI实例。前面示例的等效实现如下:
$di = DI();// 直接赋值$di['aString'] = 'Hello Dependency Injection!';// 使用类名延迟加载$di['aObject'] = 'Simple';// 使用匿名函数延迟加载$di['aClosure'] = function(){
return new Simple();};// 获取var_dump($di['aString']);var_dump($di['aObject']);var_dump($di['aClosure']);复制代码如同类成员属性的方式一样,此数组形式也不能指定默认值。
可以看到,对于设置和获取资源,我们可以根据自己的喜爱而选择不同的操作方式。但这四种操作方式之间又有一些微妙的区别,例如类成员属性和数组形式不支持指定默认值,使用类成员属性和setter访问器时不能使用非法的变量名称。通过类名的方式来进行延迟加载,需要等初始化的类提供public访问级别无参数的构造函数。如果还有其他需要初始化的工作,可以放置在onInitialize()成员函数内,DI会在对类实例化时自动触发此函数的调用。
在基础入门的各个章节最后,我们都可以看到“扩展你的项目”这样的内容,是因为通过DI统一管理和维护资源外,便可以使用开发-配置-使用模式轻松对资源进行替换、升级。开发-配置-使用 模式即:开发实现-配置注册-客户使用模式。此模式能够有效解决框架固有功能与日益多样化项目开发需求之间的鸿沟。
开发实现
开发实现主要是指实现组件、公共服务或者基础设施的功能,此部分通常由者有经验的开发工程师来完成。
例如对项目的接口签名的验证拦截、一个完成了对七牛云存储接口调用的扩展、又或者是项目内部加密的方案等,这些以包或者接口提供,为外部使用提供配套的配置说明、使用示例和文档说明。更为重要的是,应该提供完善、具备自我验证能力、高代码覆盖率的单元测试,以保证实现功能的稳定性。此类实现应该是稳定的,即没有明显或者隐藏的BUG。即使有,原作者也可以快速进行定位和解决,包括后期的扩展和升级也是。
如果实现的是PhalApi框架中的功能,则应该实现对应的接口,如:加解密接口、日志接口、缓存接口等。这样的示例,在前面讲解基础内容时已遇到了很多。这里再来稍微回顾一下其中的数据库日志示例。
<?phpclass Common_Logger_DB extends PhalApi_Logger {
public function log($type, $msg, $data) {
// TODO 数据库的日志写入 ...
} }复制代码具体实现类,通过可以放置在项目的Common目录下,也可以根据自身项目的情况放置到任意地方。如果是功能更丰富的包,则可以考虑放到扩展类库目录下。
配置注册
一旦上面实现好具体的功能后,不同的项目都可以轻松引入然后使用了。这块通常由项目的负责人来操作,因为在进行项目构建部署时,需要考虑哪些资源是必须的,这些资源又应以何种方式进行初始化和装配。打个比方,前面我们已经准备好了很多原材料,很多工具,但在开始构建一个房子时,还需要请项目负责人把这些材料和工具有效地结合安排起来,以便体现它们的最大价值。
这里的使用方式,应该是简明的,包括简明的安装,简明的配置。所以,自然而言,就涉及到了依赖注入。通过DI,项目负责人,可以轻松地将已通过严格测试的组件或服务注册进来。完成此步骤后,一切都整装待发,剩下的就是如何使用的问题了。
如使用上面的数据库日志重新注册DI()->logger服务。
DI()->logger = new Common_Logger_DB( PhalApi_Logger::LOG_LEVEL_DEBUG | PhalApi_Logger::LOG_LEVEL_INFO | PhalApi_Logger::LOG_LEVEL_ERROR);复制代码
客户使用
项目总会有不断变化的新需求,而团队也会因此同步增加吸纳新开发同学进来负责新模块新功能的开发。而对于新来的同学,往往需要使用已有的功能,以便快速实现具体的业务逻辑、规则和功能。但如果他们需要重复实现这些基础重要的功能,还要考虑如何与现在项目整合,则会过多分散他们的关注点。此外,即使很好地实现了,也会常常因为考虑不周或者编程风格各异而产出一些与项目期望不符的代码,惭而产生更多的熵。

溧阳400电话申请开通【溧阳企业网站建设】溧阳微信公众号小程序开发运营价格、溧阳微信公众号APP软件客户端设计运营、溧阳网页页面设计公司费用、溧阳公司网站制作方案流程改版维护大概需要多少钱
服务热线
顶部
备案号: 苏ICP备11067224号
CopyRight © 2011 书生商友信息科技 All Right Reserved
24小时服务热线:400-111-6878 E-MAIL:1120768800@qq.com QQ:1120768800
网址: http://www.768800.com 网站建设:上往建站
关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|
企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|
400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 苏州殡葬一条龙| 朝阳殡葬| 苏州殡葬服务|
欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系
服务热线:400-111-6878