文档章节

PHP一些细节

hirainn
 hirainn
发布于 2016/11/14 10:57
字数 598
阅读 32
收藏 0
PHP

常量和(全局)变量在不同的名字空间中。这意味着例如 TRUE 和 $TRUE 是不同的。


使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 语句之内用 const 来定义常量。

PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。
$a = `ls`;
echo $a;   //会输出当前的目录

 

流程控制语句的另一种写法

for($i = 1; $i <10; $i++){
    # do something
}

for($i = 1; $i <10; $i++):
    #do something;
endfor;

if(condition):
    #case1;
elseif(condition):
    #case2;
else:
    #case3;
endif;


同理while,foreach

goto 操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。

for($i=0,$j=50; $i<100; $i++) {
  while($j--) {
    if($j==17) goto end; 
  }  
}
echo "i = $i";
end:
echo 'j hit 17';  //输出

PHP 函数利用 func_get_args() 实现动态参数

function test(){
    return func_get_args();
}
var_export(test(1,2,3,4));
//输出 array(1,2,3,4);

namespace 的使用
可以用大括号包起来

<?php
namespace NS {
    class ClassName {
    }
    
    echo ClassName::class;
    echo "\n";
}
namespace WS {
    class WSClass{

    }
    echo WSClass::class;
}
?>


以上会输出
NS\ClassName
WS\WSClass
两个namespace之间仍然不能有任何代码

类里面的 self 与 $this 的使用,在类的定义中,self 是指向class的,而 $this 是指向object的。

header("Location:xxxxx") 之后的代码仍然会继续执行。PHP是执行完脚本文件之后才会输出缓冲区,所以要记得在header后面的操作是可以执行的

header('Location:http//www.baidu.com');
sleep(5);
file_put_contents('./test.log','test');


以上会在sleep 5 秒之后跳转,且test.log中也会写入test

© 著作权归作者所有

hirainn
粉丝 35
博文 85
码字总数 67327
作品 0
深圳
程序员
私信 提问
PHP程序员必备的3大编程自学资源,有这些资源学编程如鱼得水!

无论自学,还是报培训班,学会PHP编程的正常速度是4—6个月。 所谓的学会PHP是可以胜任PHP正式工作岗位,成功成为PHP战斗士。 之前w3cschool已经分享过PHP自学、入门、进阶的方法,今天主要就...

W3Cschool
2018/03/01
0
0
php5各个版本的区别

本文目录: PHP5.2 以前:autoload, PDO 和 MySQLi, 类型约束 PHP5.2:JSON 支持 PHP5.3:弃用一些功能、匿名函数,新增魔术方法,命名空间,后期静态绑定,Heredoc 和 Nowdoc, const, 三元运...

stone_
2016/08/09
51
0
php curl实现发送get和post请求

1.cURL介绍 cURL 是一个利用URL语法规定来传输文件和数据的工具,支持很多协议,如HTTP、FTP、TELNET等。最爽的是,PHP也支持 cURL 库。本文将介绍 cURL 的一些高级特性,以及在PHP中如何运用...

P表弟
2018/07/19
0
0
一秒找出用时间和随机数生成的上传文件名

  * 本文作者:golang,本文属FreeBuf原创奖励计划,未经许可禁止转载   在做渗透测试或者ctf比赛的时,常遇到一种任意文件上传漏洞,上传后的文件名,是使用时间加随机数生成的。常见的...

FreeBuf
2018/02/26
0
0
微软发布 Windows Azure SDK 4

在微软发布Windows Azure SDK for PHP 3.0.0的短短几个月后,也相继正式发布了Windows Azure SDK for PHP v4 完整版。 Windows Azure SDK 4包含了一些重要的特性和改进,它集成了一个用于访问...

小编辑
2011/08/02
888
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql中int(11)的列大小是多少?

mysql中int(11)的列大小是多少? 以及可以在此列中存储的最大值? #1楼 mysql中int(11)的列大小是多少? (11) int数据类型的此属性与列的大小无关。 它只是整数数据类型的显示宽度。 从11....

技术盛宴
28分钟前
19
0
聊聊artemis消息的推拉模式

序 本文主要研究一下artemis消息的推拉模式 拉模式 receive activemq-artemis-2.11.0/artemis-jms-client/src/main/java/org/apache/activemq/artemis/jms/client/ActiveMQMessageConsumer.......

go4it
37分钟前
39
0
vue 全局前置守卫引起死循环的原因与解决方法

我们经常会用到全局前置守卫,如判断用户有没有登陆过,如果登陆过就直接跳到目的页面,如果没有登陆过,就跳转到登陆页。 先看官网对全局前置守卫的介绍 使用 router.beforeEach 注册一个全...

tianyawhl
48分钟前
31
0
如何按索引从std :: vector <>擦除元素?

我有一个std :: vector <int>,我想删除第n个元素。 我怎么做? std::vector<int> vec;vec.push_back(6);vec.push_back(-17);vec.push_back(12);vec.erase(???); #1楼 erase方法将以两......

javail
今天
43
0
使用生成器模拟时间分片

对于cpu密集型任务, 时间分片可以有效减少页面卡顿, 不过对于纯计算型任务还是推荐使用worker在后台做计算 效果图, 计算密集型任务被分到每次只执行16ms, 每次执行完毕留给浏览器时间去响应事...

阿豪boy
今天
63
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部