php编程能力提升系列日常工作常见问题总结(代码片段)

躬匠 躬匠     2022-12-13     762

关键词:

一、引言

   记录并总结日常遇到的问题,做到深入思考,避免再次入坑;

  本篇是记录了日常工作中遇到的一些问题,类似于流水账形式;如果感觉有点乱,多包容哈

二、详情

1、5.3.0 + 以上的版本才支持命名空间;5.3.0 + 版本去除了safe_mode的选项,默认是关闭状态

2、类是其基类(包括抽象类)和接口的实例,也就是instanceof 为true;

3、stdClass是所有类的基类

4、echo print 都可以用来输出字符串;printf可以按照一定格式输出数据;sprintf可以按照一定格式返回字符串(%s %d);print_r可以打印任何数据,和var_dump很类似;

5、对于一个字符串,可以使用str_split进行分割为数组,也可以直接将字符串按索引取数据,如$str[1];通过strlen获取到字符串的长度之后就可以进行字符串的遍历操作了。

6、对象的复制是引用类型的复制,除此之外的其他数据类型的复制都是值复制,一个变量的改变并不会引起另外一个变量的改变。

7、对于对象类型的参数传递是引用传递(方法里修改了形参的值会影响到实参),其他类型的参数传递都是值传递;

8、常量定义的简写:

defined(NAME) or define(NAME, 'lily');
//注意:
//对于在类或者接口中定义的常量则一定要通过类或者接口访问才可

9、PHP5引入了类型提示的概念,在函数定义时,可以强制定义某个参数为对象或者数组,但对于标量数据类型不起作用,如下面的函数定义:

function show (string $arr)    //会将前面的string当作类名
	var_dump($arr);


show('lily');

会报如下的错误:

9、list只可用于索引数组而不能用于关联数组

list($name, $sex, $age) = array('lily', 1, 30);

10、range函数用于创建范围数组,不仅可以用于数字,还可用于字符数组的创建,如下所示:

range('a', 'd');
range(1, 10, 3); //第三个参数用于设置跨度 

11、array_pop、array_push、array_shift、array_unshift操作数组之后,对于索引数组而言,都会重新组织一下

数据。

12、parse_url可以解析一个 URL 并返回一个关联数组,包含在 URL 中出现的各种组成部分。可以通过指定第二个参数来获取指定的内容,第二个参数有PHP_URL_SCHEMEPHP_URL_HOSTPHP_URL_PORTPHP_URL_USERPHP_URL_PASSPHP_URL_PATHPHP_URL_QUERYPHP_URL_FRAGMENT

$_SERVER全局变量里的有些内容与这个会有所重叠。

13、strstr可以通过设置第三个参数返回前一部分字符串。(5.3+版本才支持)

 $url = 'http://username:password@hostname/controller/action?arg=value#anchor';
 echo strstr($url, 'hostname');
 //输出为hostname/controller/action?arg=value#anchor,包含hostname字符串
 echo strstr($url, 'hostname',true);
 //输出为http://username:password@,不包含hostname

14、http_build_query用于生成 URL-encode 之后的请求字符串,常常用于数组,但也可以用于对象;

 $data = array(
 		    'foo'=>'bar',
 		    'baz'=>'boom',
 		    'cow'=>'milk',
 		    'php'=>'hypertext processor'
         );
 
 echo http_build_query($data) . "\\n";
 
 //输出为foo=bar&baz=boom&cow=milk&php=hypertext+processor

15、PHP支持四种属性作用域:public private protected static;方法支持六种作用域:public private protected final static abstract;

16、memory_limit 设置内存;max_execution_time设置脚本的最大执行时长;

17、PHP7 之前对于普通的方法也可以通过类来调用,不过会报strict 错误;在PHP7 之后,只有静态方式才允许通过类来调用,否则会报fatal错误;

18、子类可以覆盖父类中定义的属性和方法,设置可以修改访问修饰符

19、final的类不可被继承;final的方法不允许被覆盖;不允许定义final属性

20、子类不会显示的调用父类的构造函数,只会在子类不存在构造函数或者在子类中使用parent::__construct()方法时才会调用父类的构造函数;

21、对于在类或者接口中生命的常量,则只能通过接口或者类来调用,而通过define生命的常量可以直接调用

22、因为静态属性、静态方法不属于某个对象,它是与类有关的,所以只能通过类来调用,而且静态方法中没有上下文环境,方法里面不能使用$this调用变量,只能使用类(类名/self)来引用静态属性;其他属性和方法则是与具体的对象有关的,所以需要通过对象来调用;

23、PHP不支持方法重载、操作符重载、多重继承

24、接口中除了可以定义一些方法外,还可以定义常量;但是这个常量只可以通过接口来访问

25、接口可以多继承,而类只可以单继承

26、PHP的错误级别可以在配置文件中通过error_reporting设置,在开发环境下,开启display_errors并将错误级别设置为E_ALL&E_STRICT;其中E_STRICT会显示一些版本兼容的提示信息。

27、对于程序中有可能产生异常的地方一定要记得try catch处理,或者设置一个全局异常捕捉处理函数:set_exception_handler();推荐采用第二种,这样在程序中就不用过多的考虑异常的问题;一定要保证程序的健壮性;

28、与目录、文件相关的常见系统函数有basename、dirname、pathinfo、realpath;其中basename用来返回目录的文件以及后缀部分;dirname用于返回路径的目录部分;pathinfo函数会返回一个数组,包含目录、文件名、后缀等部分;realpath用来返回去除符号链接相对路径之后得到的绝对路径;

$path = '/home/work/orp/webroot/baidu/mapx/index.php';
var_dump(pathinfo($path));
//输出为array(4)  ["dirname"]=> string(33) "/home/work/orp/webroot/baidu/mapx" ["basename"]=> string(9) "index.php" 
//["extension"]=> string(3) "php" ["filename"]=> string(5) "index" 
echo basename($path,'.php');
//输出为index
echo basename($path);
//输出为index.php
echo dirname($path);
//输出为/home/work/orp/webroot/baidu/mapx/
echo realpath('/home/work/orp/../../mapx/index.php');
//输出为/home/mapx/index.php

29、parse_url可以对URL进行解析,同样parse_str可以对字符串进行解析。其中parse_url的返回结果是一个数组,而parse_str的解析结果需要放到第二个参数中,类型为数组

如何快速提高编程能力(代码片段)

#############################################"""如何快速提高编程能力,自己的认识1,多练,这是每一个人都知道的,2,多学,学习别人的代码""" #############################################"""别人总结的方法:第一条,多写一定要多练,多写... 查看详情

程序员,如何提升你的编程能力

    从业人员都知道,编程能力的提升,需要大量的写代码,虽然写代码能够提升你的编程能力,但我觉得还有一种方式也能很好的提升你的编程能力,那就是大量的阅读代码。大多数的从业人员对代码心生敬畏,... 查看详情

面试系列--php后端面试常见问题总结(代码片段)

 开篇:自我介绍面试官好,我叫XXX,XXX年X月XX毕业于XXX,专业为计算机科学与技术。毕业X年的时间里一直在从事PHP、Go、Python、C#语言的后端开发工作,其中主流开发语言是PHP;对前端的相关知识也有所... 查看详情

面试系列--php后端面试常见问题总结(代码片段)

 开篇:自我介绍面试官好,我叫XXX,XXX年X月XX毕业于XXX,专业为计算机科学与技术。毕业X年的时间里一直在从事PHP、Go、Python、C#语言的后端开发工作,其中主流开发语言是PHP;对前端的相关知识也有所... 查看详情

奉劝刚参加工作的程序员们:写再多代码,也不如提升这两大能力有价值!

...最高?软件工程师水平测定平台HackRank发起了一系列编程挑战竞赛,给出了一份出乎意料的数据。据悉,这份数据研究分析了HackerRank社区里30万名开发者完成的140万项编码挑战。最终的结果显示中国程序员排在了第一... 查看详情

java并发编程(代码片段)

并发编程1.多线程    Java是最先支持多线程的开发的语言之一,Java从一开始就支持了多线程能力。由于现在的CPU已经多是多核处理器了,是可以同时执行多个线程的。多线程优点多线程技术使程序的响应速度更快,可以在进... 查看详情

如何提升python编程能力

...导原则,遵循这些基本原则,你就可以像个Pythonista一样编程。具体内容你可以在Python命令行输入importthis看到:TheZenofPython,byTimPetersBeautifulisbetterthanugly.#优美胜于丑陋(Python以编写优美的代码为目标)Explicitisbetterthanimplicit.#明了... 查看详情

程序员职业生涯系列:关于技术能力的思考与总结

目录引子技术人成长的悖论技术能力是什么?重复琐碎类工作的不同做法 查看详情

工作那些事(三十)如何提升个人能力

在工作过程中,如何提升个人能力,这是一个很重要的问题。有的人也许很清楚,有的人是在混日子。那究竟该如何提升个人能力呢。       在我们工作中,有的时候可能会很忙,有的时候,可能会很闲... 查看详情

想技术提升,你得先从提升编程思想这一步开始~(代码片段)

为什么要提升编程思想这个问题我想大家都有答案,编程思想就是一个程序员的灵魂,没有灵魂的程序员,只配ctrl+C/V.专业一点来讲,提升编程思想的重要性在于它能够帮助开发者更好地解决问题、提高效率、... 查看详情

程序员的自我提升

看到片帖子,讲述一位十年编程经验的前辈,谈的对程序员提升的一点见解。我总结了一下,大致如下几点第一、每天都要坚持学习,进步。无论进步多少,贵在坚持。此外,尽量远离手机,手机会让自己分心的。第二、处理好... 查看详情

最后一周总结

...部锻炼到。在几次团队项目中,认为自己进步比较大的是编程的实现以及交流能力,  Programming:Implementation  在词频统计项目和对联小程序项目中,我负责了一些函数的底层实现工作以及前端页面的实现测试工作,编程能力... 查看详情

可极大提升编程思想与能力的书有哪些?

...1前言对于计算机相关专业的学生来说,学校教会我们编程语言,学习诸如Java,Python或C++之类的编程语言很容易,但是学习编写好代码不是。编程并不等于写代码,编程是一个更广泛的过程,它还涉... 查看详情

转行自学编程的前提条件和能力

回顾自身转行自学java编程入行的经历总结参考如下:前提条件:对眼下的工作、生活状态的极度不满足;有人指引大体方向,说明行业状况;坚信可以通过自学一门技术或提高某种能力来改变眼下不满的工作、生活状态;放得... 查看详情

如何提升自己的python编程能力?

什么是编程能力?——用程序去解决真正的问题,你的程序写的能让人读懂,这是编程能力;你的程序高效可维护,这是编程能力;你的程序被review的次数很少,质量很高,这是编程能力;你能... 查看详情

2019年度总结

...统是一个程序员的基本功,校招都会问到,而相比之下,编程语言却不那么重要。很多校招岗都不限制语言。经过各路面试官吊打之后,选择了同程艺龙,其实也是被选择,可能由于我找工作的时间比较尴尬,面试机会特别少,... 查看详情

编程谜题:提升你解决问题的训练场(代码片段)

...通常更明确且包含更多内容。它们让您有机会针对比您在日常工作中通常需要处理的问题更简单的问题练习逻辑思维。你经常可以用几个类似的谜题来挑战自己。这使您可以建立程序记忆,就像肌肉记忆一样,并获得构... 查看详情

个人总结

...前完成,也给自己提升了很多的开发经验,使自己的代码能力越来越成熟,提高了不少部分。 不好的部分就是代码还是有些繁琐,争取做到更简单化,轻量化,以后多打代码,争取做得更好,对课程的感受是很好,让我对自... 查看详情