PHP该怎么学?

2022-12-09 0 433

说到是并非自学那个难题,来撷取呵呵我的 PHP 自学走线~

文本产品目录:

PHP 高阶

PHP 高阶

PHP 剑客商业模式

1. PHP 高阶

PHP 高阶没啥好说的,会基本上代码,基本上的合作开发内部结构(一般来说指MVC,哈哈哒),类与第一类,就相差无几了,能说是高阶了。

1.1 OOP

写 PHP 最多现阶段不外乎是 OOP,程序语言,齐广君。不打趣地说,与我并肩作战的这类后辈是连 OOP 都分不清的,这儿我就不多说了。

只不过并非说很大要会,要去认知 OOP,而已假如你认知那个玩意儿,对你前面的组织工作早已自学会十分的有益处。

只不过程序语言也没所以繁杂,假如认知一点儿,单个职能,只不过是两个第一类越单纯越好。

也是说,是他们该做就由他们做,不应由他们做的就千万别他们做。

1.2 MVC

老梗了,简而言之 MVC 许多人能说 Model, View, Controller, 只不过这种说要说的,而已这种说不能让你更快地认知内部结构和可扩展性。

MVC 我现阶段的认知是:初始化(度),也很单纯,其它架构也相差无几那个基本原理,总之每一架构的同时实现形式都不那样。

基本上业务流程:

+————–+ +———–+ +————–+ +————–+ | | —-+ request +—-> | | ————> | | | | +———–+ | | | | | Request | | Route Match | | Handle | | | +———–+ | | +———-+ | | | | <—-+ Response +—– | | <-+ Response +– | | +————–+ +———–+ +————–+ +———-+ +————–+

大致列了下最基础的架构底层基本原理,实际上咱们合作开发中 90% 接触的而已在 Handle 处的组织工作,至于 Request、 Match、 Route 等基础的第一类或者数据,架构早早已封装好了,也无需过度纠结和头疼这方面的事情,先要把业务功能处理好,并且容错处理好即可。

单纯总结一句话:知其然而不知其所以然

2. PHP 高阶

高阶那个真是个头疼的难题,啥叫高阶,我的认知是,做一些之前没做过的(指本领域:PHP),例如:设计商业模式,SPL,缓存设计(Cache),研究架构,合作开发规范,单元测试,行为驱动合作开发,组件(包括他们着手合作开发的),Composer 等等的东西,都能认知为高阶。

架构推荐:

SymfonyLaravelYaf

PHP 合作开发规范(PSR):

PHP FIG

PHPUnit & TDD/BDD:

PHPUnitPHP spec

设计商业模式:

设计商业模式

SPL:

PHP SPL

Composer:

Composer

欢迎补充

2.1 设计商业模式

设计商业模式,两个在软件设计中占有重要角色的课程,而我们又不得不去了解。而对设计商业模式来说,许多人是抗拒的,因为他和普通的合作开发者有着不那样的思维形式,两个很明显的提升是: 设计,而设计应该是根据发展的变化而变化,业务的变化而变化,商业模式也那样,不能是永恒不变的。唯一不变的是,基础,这些技巧与思维少不了的是需要良好的基础。

所以说,基础是多么重要的,任何一切的一切都是建立与基础之上,这叫积累。如同盖楼。

在这些已有基础,我们需要自学并且还需要学会各种推陈出新,这种才能让他们让他人走得更远。

设计商业模式自学推荐: 设计商业模式

2.2 资源节省

当今互联网,每秒钟都是钱,能节省的,绝对不能浪费,而且节省还能很大地提高服务的质量。

一般我们说的资源是:

内存带宽磁盘CPU

而这些之间只不过是有很大的关联的,和代码质量和容错机制也有很大关系。

上述每两个都很重要,决定着你的服务质量。

能少占用内存就少占用内存,图片、媒体资源能压缩就压缩,减少无用的存储,降低代码的繁杂度。

2.3 容错

比较常见的是: file_get_contents,connection,有时候我们会很自然地遗忘这儿只不过会有很大几率出现超时,最严重的是造成服务无响应,如下代码:

file_get_contents(https://www.google.com/);

这代码分分钟被打,活生生将程序毁了。

假如发生超时,会占用大量 CPU,严重可能会导致服务无响应,危害极大。

容错是每一合作开发者在合作开发过程中必须要考虑的地方,没代码没 “八阿哥”,总会有意外的地方,做好容错能最大程度地减少对用户的伤害和能有效提高在出错时的用户体验。百利而无一害。

2.4 日志

日志,两个很容易被无视而又十分十分重要的环节,能说,这一环节比你做的任何两个地方的业务代码都要重要。

日志的益处:

记录,跟踪调试恢复分析调优等等…

益处有好多,但在我们合作开发者当中,其日志最重要的功能之一是,记录难题,调试代码,优化架构。

不得不说日志的重要性,请你好好重视这两个容易被忽略的环节。

而日志的设计需要考虑性能,不能因为日志而影响服务质量哦。所以在日的环节在完整性和效率上要做好权衡。

2.5 缓存设计

缓存必须是针对业务情况而设计,不能生搬硬套。大公司的不很大适合你,开源方案也不很大不适合你,很大要找到他们合适的方案。

而在缓存设计方面,我个人推荐这一系列的文章: 缓存使用与设计

通俗单纯地说,缓存的目的是为了提高服务的响应速度和质量,不能因为缓存的添加而导致服务异常。

2.6 基本原理认知 (这儿说到架构的研究,说得不好的地方,请多多批评和教导)

我们平时合作开发接触不同的合作开发工具,操作,甚至是监控,所以他们其中的基本原理,你又认知么?

只不过我们每天接触的东西都有它的同时实现基本原理,算法等等的东西,但我们一直都在使用,并没很好地去认知他们当中的奥秘。时候有空去接触呵呵了。

首先,合作开发,代码我觉得是将现实生活搬到互联网中,我举个例子:

为什么人访问量上来了,咱们就要扩容,去扩展呢?基本原理很单纯,看看咱们超市里面的收银台就知道了。咱们超市里面所有收银台并非每天每一位置都有人的,根据人流(流量)动态扩容,而且有些收一台的两个位置上设置有两个人(多线程/多进程,看个人认知),那个设计挺妙的。当人一多,就会开多各个位置收银台,和增加人手。那他是是并非知道人多的呢?也很单纯,是经理(Manager/Master进程或者是运维,看认知),他知道,内部调度安排人手。

大致举了这么两个例子来说明扩展的基本原理。

回到正题: 架构

相信大家都有接触过许多不同的架构,CI, TP, Symfony, Yii, Laravel, Slim等等,最深刻,最相似的地方在哪里呢?可能有些没,但是,有一点儿能肯定的,是,都是有一系列 Http 封装,Route 处理。因为这两是灵魂,剩下的是并非业务和内部结构。

剩下的是考验架构代码质量的时候了,这儿有一系列的架构,有的轻量,有的重量,有的灵活,有的高效。只不过说到这儿许多朋友都大概了解架构的运行基本原理。

我看过Symfony、Laravel、CI、Silex和ThinkPHP的代码,总之很粗略地看看。里面同时实现的大部分代码都是将各个处理模块 “粘合” 一起,也是 “Bridge”。

大致业务流程图:

+———-+ +————-+ +————+ | | | | | | | Client |———->| Application |———————>| Start | | | | | | | +———-+ +————-+ +————+ ^ | | | | v | +————-+ +————-+ | | | | | | | Container |————>| Bootstrap |—–+ | | | | | | | +————-+ +————-+ | | ^ | +————+ | +——-+——–+ | | | | | | +—->| Request | | +———–+ +———–+ | | | | | | | +————+ | | Route | | Service | | | | | | | | +—————-+ +———–+ +———–+ +————-+ | | | | | | | Response | | Dispatcher | | | |<———————————————-| |<—————+ | | | | +—————-+ +————-+ ^ | +————–+ | | | v | +———-+ | | | +——–|Controller| | | +———-+

当你了解了这些业务流程和所需的组建,用先用的组件的话都是能很方便地组合出他们想要的架构。

只不过我这儿希望更多的初学者多看看 ThinkPHP 的代码,然后也看看其它开源架构的代码,你会发现,除了 ThinkPHP 之外,你还能发现更多新奇好玩的东西。

最终只不过还是离不开他们动手合作开发两个。

具体架构合作开发系列我会找个时间与大家撷取。架构的认知可谓到一段落,下次我会撷取我对其它服务器的认知。

来到那个阶段的,应该始终有两个意识:服务质量高于一切,是不能因为添加服务而影响原有的服务

单纯总结呵呵。大量动手实践他们的猜想,分析他们做过的项目并且优化他们觉得不足的地方。

总结: 知其然并且知其所以然。

3. PHP 剑客商业模式

我相信经过九九八十一难,能来到那个商业模式的人早已不多了。我他们还是菜鸟,不敢在这儿胡说,这儿会记录我所有的 PHP 底层自学的经过,这儿的故事,我想我等不到下两个故事了。

Unix 环境高级编程tcp/ip 网络编程PHP 扩展合作开发颈椎病康复指南活着

3.1 Unix 环境高级编程

为什么要认知并自学这一方面的知识?若果你是一名有追求的 PHP 合作开发者,最终还是应该将精力落入到 “系统” 处,因为真正处理 PHP 程序的,正正是 “系统”,如何能让他们的 PHP 做得更快,如何能让他们的服务做的更快,如何能让后端支持更加强大,灵活,高效,你就应该关注到底层系统的同时实现当中,但平时也千万别忘了 PHP 的合作开发规范。

此处的文章和笔记,我将会在以后的 Unix 自学一系列当中给大家呈现。

3.2 tcp/ip 网络编程

在日常生活中,Http 早已离不开大家了,从平时打开应用,打开浏览器,搜索,都是需要使用 Http,应该没比那个接触更多了吧。但是里面的奥秘你又知道多少?没关系,和我一起探索 TCP/IP 的奥秘吧。

文章和笔记,以后会在 TCP/IP 章节中给大家呈现.

3.3 PHP 扩展合作开发

自学扩展合作开发和自学 PHP 是那样那样的,根据 PHP 手册上的业务流程…

语言参考基本上语法类型变量常量表达式运算符业务流程控制函数类与第一类命名空间Errors异常处理生成器引用的解释预定义变量预定义异常预定义接口上下文(Context)选项和参数支持的协议和封装协议

看到这儿应该要懂得举一反三的了,前面的看你们的造化了……

文本来自 SegmentFault 社区原文:我的 PHP 自学走线作者:黄总

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务