PHP
BetaCat1
这个作者很懒,什么都没留下…
展开
-
PHP中new self()和new static()的区别探究
1.new static()是在PHP5.3版本中引入的新特性。2.无论是new static()还是new self(),都是new了一个新的对象。3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢?为了探究上面的问题,我们先上一段简单的代码:复制代码class Father {public function getNewFathe...转载 2019-12-11 14:48:31 · 206 阅读 · 0 评论 -
PHP在局部命名空间中引入全局命名空间的文件后,是否会合并?
1.php`namespace one;include('test.php');class A{ function __construct() { new \B();//输出‘我是全局空间的B类’,如果不带\符号,那么会提示找不到这个Class 'one\B' 这个类 }}new A();`test.phpclass B{ publi...原创 2019-11-15 13:46:13 · 274 阅读 · 0 评论 -
PHP中file_exists与is_file,is_dir的区别介绍
很显然file_exists是受了asp的影响,因为asp不但有fileExists还有folderExists,driverExists,那么PHP中file_exists是什么意思呢?PHP的 file_exists = is_dir + is_file它既可以判断文件是否存在,又可以判断目录是否存在。但这样一个全面的函数执行效率非常低,就像asp中request不指定是form,还是ge...原创 2019-10-27 15:10:13 · 197 阅读 · 0 评论 -
PHP的函数为什么不能直接访问全局变量
php没有入口函数,都是些全局代码。所以php的机制是在函数中不能直接访问全局变量。相当于一个保护机制防止变量污染。如果使用全局变量在子作用域会增加程序的耦合性。...转载 2019-07-07 10:36:57 · 1012 阅读 · 0 评论 -
PHP中实现函数重载
转载自:http://cnn237111.blog.51cto.com/2359144/1284085由于PHP是弱类型语言,因此函数的输入参数类型无法确定(可以使用类型暗示,但是类型暗示无法用在诸如整型,字符串之类的标量类型上),并且对于一个函数,比如只定义了3个输入参数,PHP却运行调用的时候输入4个或者更多的参数。因此基于这2点,注定了PHP中无法重载函数,(类似Javascript语言)...转载 2019-07-14 13:31:07 · 122 阅读 · 0 评论 -
php闭包测试
<?php$fun3 = function(){ $name = 1; $test = function()use(&$name){ return $name++; }; return $test;};$a=$fun3();for($i=0;$i<10;$i++){ echo $a();}?>输出:12345678910<?p...原创 2019-07-13 11:35:38 · 200 阅读 · 0 评论 -
php闭包(匿名函数)中的use用法
php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。闭包的语法很简单,需要注意的关键字就只有use,use意思是连接...转载 2019-07-13 09:31:12 · 728 阅读 · 0 评论 -
PHP中的switch case
$a = 10;switch ($a){ case $a<0: echo "${a}小于0"; break; case (1==1)://或者写成($a>0)也可以 echo "${a}大于0"; break; default: echo '没有匹配的条件'; break;}输出:10大于0switch case的逻辑是 $acase||...原创 2019-07-03 14:53:11 · 595 阅读 · 0 评论 -
弱类型变量原理探究
PHP是一门简单而强大的语言,提供了很多Web适用的语言特性,其中就包括了变量弱类型,在弱类型机制下,你能够给一个变量赋任意类型的值。 PHP的执...转载 2019-07-08 15:47:17 · 531 阅读 · 0 评论 -
isset()和empty()和is_null ()区别
$a=false;var_dump(isset($a));//返回trueisset — 检测变量是否已设置并且非 NULL。isset只有在变量未被定义的时候才会返回false。就算变量被定义为false也会返回true.$a=false;var_dump(empty($a));//返回trueempty在变量被定义为false时(包括0,‘0’)也会返回true.综上,现在很...原创 2019-07-20 19:38:05 · 132 阅读 · 0 评论 -
include和require可以当做return函数来使用
可能大家也都见过很多开源的产品,大多它们的配置文件都存放在一个单独的文件中,而这个文件里只存放了一个数组,其实这里运用了一个PHP的小技巧,就是可以将文件包含进来,并且赋值给一个变量,这个变量就具有了整个配置的数组,我给大家举个例子:config.php --------------------------<?phpreturn array( ...原创 2019-07-20 19:54:27 · 471 阅读 · 0 评论 -
php try catch finally 结构
code 1<?php function foo(){ $bar = 1; try{ throw new Exception('I am Wu Xiancheng.'); }catch(Exception $e){ return $bar; $bar--; //...转载 2019-07-20 22:50:43 · 809 阅读 · 0 评论 -
PHP PDO execute总是返回false
public function list($user_id,$page,$size){ if($size > 100) { throw new Exception('Page limited 100', Error::PAGE_LIMIT_EXCEED); } $sql = "SELECT * FROM `arti...原创 2019-07-22 12:20:58 · 982 阅读 · 0 评论 -
PHP 页面编码声明方法详解(header或meta)
php的header来定义一个php页面为utf编码或GBK编码php页面为utf编码header(“Content-type: text/html; charset=utf-8”);php页面为gbk编码header(“Content-type: text/html; charset=gb2312”);php页面为big5编码header(“Content-type: text/ht...转载 2019-09-09 08:56:48 · 307 阅读 · 0 评论 -
PHP将对象或数组作为参数传入,传的是副本还是本体?
class A{ public $name ='ZZZ'; function setname($new_name){ $this->name = $new_name; }}$me = new A();function B($class){ $class->setname('QQQ');}B($me);echo $me->...原创 2019-09-10 16:31:58 · 484 阅读 · 0 评论 -
.为何要用匿名函数
.为何要用匿名函数:不用担心函数名冲突,方便为自己不熟悉的JS页面添加功能。匿名函数的定义就相当于只产生了一个变量在值,而没有绑定任何名字,所以会在定义完之后就被回收,无法重复使用,只能在定义时使用一次。应用:当某一个功能仅使用一次就没有再重复使用的必要了就应该定义成匿名函数。...原创 2019-09-12 09:38:47 · 991 阅读 · 0 评论 -
PHP函数global传入全局变量是引用传参还是复制传参
$a = 'zzz';function show(){ global $a; $a = 'qqq';}show();echo $a;输出:qqq结论:引用传参原创 2019-09-12 19:27:43 · 402 阅读 · 0 评论 -
PhpStorm 常用快捷键和配置
PhpStorm 常用快捷键和配置:PhPStorm 是 JetBrains 公司开发的一款商业的 PHP 集成开发工具,PhpStorm可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。Phpstrom的一款名为Magicento的插件对快速创建M...转载 2019-06-04 21:28:49 · 354 阅读 · 0 评论 -
php对象在内存中的分配
内存从逻辑上说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明 放在不同的内存段里面。数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量;代码段(code seg...转载 2019-05-25 13:28:17 · 265 阅读 · 0 评论 -
策略模式的PHP实现实例
//所有鸭子的抽象类abstract class Duck{ public $flyB;//为引用对象建立变量,飞行行为 public $quackB;//为引用对象建立变量,叫声行为 //执行飞行行为 public function performfly(){ $this->flyB->fly(); } //执行叫声行...原创 2019-05-08 16:54:49 · 318 阅读 · 0 评论 -
PHP数组可以同时使用队列和栈的方法
$a = [1,2,3,4,5,];$b = array_pop($a);//栈取值$c = array_shift($a);//队列取值print_r($b);echo <br>;print_r($c);输出:51原创 2019-05-08 14:45:47 · 110 阅读 · 0 评论 -
剖析PHP底层数组是如何实现的
PHP是一门入门容易,使用范围广泛的语言,以其灵活性以及web后端开发被很多人熟知,也被很多人戏称“PHP是世界上最好的语言”。本人是一名“忠实”的PHPer,相信用过PHP的程序员都会体会到PHP数组的灵活性,相对传统的C语言,使用起来很是方便,拥有关联数组(key值可以是字符串),不需要预定义数组空间大小,关联数组,不需要指定key的快速索引赋值等等便利方法,这段时间研究了一下PHP数组...转载 2019-05-04 13:02:05 · 223 阅读 · 0 评论 -
PHP内核--Zend引擎
在前面的章节介绍了PHP的生命周期,PHP的SAPI,SAPI处于PHP整个架构较上层,而真正脚本的执行主要由Zend引擎来完成, 这一小节我们介绍PHP脚本的执行。目前编程语言可以分为两大类:第一类是像C/C++, .NET, Java之类的编译型语言, 它们的共性是: 运行之前必须对源代码进行编译,然后运行编译后的目标文件。第二类比如:PHP, Javascr...转载 2019-04-27 11:03:41 · 139 阅读 · 0 评论 -
PHP使用CURL详解
PHP使用CURL详解 CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。使用CURL发送请求的基本流程使用CURL...转载 2019-04-16 15:46:33 · 119 阅读 · 0 评论 -
Windows 64位下安装php的redis扩展(php7.2+redis3.0)
原 Windows 64位下安装php的redis扩展(php7.2+redis3.0) 2018年06月26日 11:30:32 岁月了无然 阅读数:3848 ...转载 2019-04-11 14:03:19 · 251 阅读 · 0 评论 -
浅析PHP中的i++与++i的区别及效率
先看看基本区别:i++ :先在i所在的表达式中使用i的当前值,后让i加1++i :让i先加1,然后在i所在的表达式中使用i的新值看一些视频教程里面写for循环的时候都是写 ++i 而不是 i++,上网搜索了一下,原来有效率问题++i相当于下列代码i += 1; return i;i++相当于下列代码j = i; i += 1; return j;当然如果编译器会将这些差别...转载 2019-04-10 16:09:02 · 191 阅读 · 0 评论 -
三大特性:封装,继承,多态
透切理解面向对象三大基本特性是理解面向对象五大基本原则的基础.三大特性是:封装,继承,多态所谓封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。封装是面向对象的特征之一,是对象和类概念的主要特性。 简单的说,一个类就是一个封装了数据以及操作这些数据的代码的逻辑实体。在一个对象内部,某些代码或某些数据可以是私有的,不能被外界访问...转载 2019-05-23 08:59:20 · 209 阅读 · 0 评论 -
PHP在函数中使用全局变量时和形参名产生冲突时会发生什么
$a = 1;function A($a){ global $a; echo $a;}A(2);//输出1当用global声明之后,$a变量的地址就指向全局变量了。原创 2019-05-18 14:25:04 · 368 阅读 · 0 评论 -
字符串本质是字符数组
$a = 'hello world' ;for ($i=0;$i<strlen($a);$i++){ echo "第${i}个字符串是:".$a[$i],'<br>';}原创 2019-06-14 17:18:30 · 685 阅读 · 0 评论 -
PHP:执行模型和内存模型
PHP:执行模型和内存模型 背景对于任何一种语言,了解其执行模型和内存模型都是有意义的,本文中的内容不见得正确,请多批评。执行模型每个请求都是一个独立的PHP进程,两个请求之间会完全隔离,会话和Cookie是通过其他机制在多个请求之间实现数据共享,像静态变量和全局属性这些会在每个请求中重新初始化。示例1 <?php2 static $StaticV...转载 2019-06-14 10:04:13 · 251 阅读 · 0 评论 -
{}和endforeach语法在功能上没有区别,只是在模板中更加清晰而已
<?php$a =[1,2,3,4,5,6];foreach($a as $i){ ?> <a href="www.baidu.com"><?php echo $i;?></a><?php } ?>同样可以输出a标签。原创 2019-06-02 08:52:43 · 1456 阅读 · 0 评论 -
关于PHP中命名空间和spl_autoload_register函数的关系说明
在我们使用命名空间的时候,只完成了一种逻辑关系的独立。意思也就是说,对于PHP引擎来说,当他看到 namespace myclass;的时候,可以知道,此名称以下定义的类库拥有了一个独立的空间,名字叫做 myclass 。而同样的类库名称不能在同一个明明空间中,意思类似于,同一...转载 2019-05-29 21:38:14 · 291 阅读 · 0 评论 -
PHP的全局作用域是文件本身
PHP的全局作用域是文件本身而不是以<?php ?>来决定的<?php$a = 100; ?><?php echo $a;//输出100?>原创 2019-05-18 20:29:55 · 299 阅读 · 0 评论 -
PHP中define 和const的区别
define 可用表达式来定义,但不能在类中定义,比如define(NAME,$a);const只能用字面量(标量)来定义,不过可以在类中定义,例如:const NUM = 99;原创 2019-05-18 15:01:55 · 367 阅读 · 0 评论 -
PHP变量只记忆表达式运算后的值,而不是每次提取变量都重新计算一遍
$a = [1,2,3,4];$b = count($a);echo $b;//输出4array_pop($a);echo $b;//输出4print_r($a);//Array ( [0] => 1 [1] => 2 [2] => 3 )可以看出,虽然数组的项数已经减少了,但是b输出的还是第一次计算的count(b输出的还是第一次计算的count(b输出的还是第一...原创 2019-05-18 14:36:21 · 356 阅读 · 0 评论 -
echo、print、print_r、printf、sprintf、var_dump的区别比较
$a = [1,2,3];echo '$a';//报错转载 2019-04-10 21:39:57 · 155 阅读 · 0 评论