IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> Web安全学习Week3 -> 正文阅读

[PHP知识库]Web安全学习Week3

这周主要学了PHP,MySQL,SQL

学的时候才发现MAC OS12以及把PHP删了 在网上找半天对的老教程

找到了才发现已经删了PHP?

又去下PHP也花了好多时间 直接劝退我 好在顶过来了

PHP

PHP语法

PHP脚本在服务器上执行,然后将纯HTML结果发送回浏览器

基本的PHP语法

PHP脚本可以放在文档中的任何位置。

PHP脚本以<?php开始,以?>结束:

<?php

// php代码

?>

PHP文件的默认文件扩展名是”.php”。

PHP文件通常包含HTML标签和一些PHP脚本代码。

下面,我们提供了一个简单的PHP文件实例,它可以向浏览器输出文本”Hello World!”:

<?php

echo “Hello World!”;

?>

PHP中的每个代码都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

通过PHP,有两种在浏览器输出文本的基础指令:echo和print。

PHP变量

变量是用于存储信息的“容器”:

<?php

$x=5;

$y=6;

$z=$x+$y;

echo $z;

?>

上面的z结果为11.

在PHP中,这些字母称为变量。

PHP变量规则:

·变量以$符号开始,后面跟着变量的名称

·变量名必须以字母或者下划线字母开始

·变量名只能包含字母、数字以及下划线(A-z、0-9和_)

·变量名不能包含空格

·变量名是区分大小写的($y和$Y是两个不同的变量)

创建(声明)PHP变量

PHP没有声明变量的命令。

变量在您第一次赋值给它的时候被创建:

<?php

echo "累死老子";

$x=4;

$z=$x+4;

echo $z;

$text="Hello World!";

echo $text;

?>

上面执行语句中,变量txt将保存值Hello World!,且变量x将保存值4。

PHP是一门弱类型语言

在上面的实例中,我们注意到,不必向PHP声明该变量的数据类型。

PHP会根据变量的值,自动把变量转换为正确的数据类型。

PHP变量作用域

变量的作用域是脚本中变量可被引用/使用的部分。

PHP有四种不同的变量作用域:

·local

·global

·static

·parameter

局部和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用global关键字。

在PHP函数内部声明的变量是局部变量,仅能在函数内部访问:

<?php

$x=5;

function myTest(){

? ? $y=10;

? ? echo "变量x为:$x";

?? echo "变量y为:$y";

}

myTest();

echo "变量x为:$x";

echo "变量y为:$y";

?>

输出结果为

变量x为:变量y为:10变量x为:5

变量y为:

如果要在一个函数中访问一个全局变量,需要使用global关键字。

PHP global关键字

global关键字用于函数内访问全局变量:
<?php

$x=5;

$y=10;

function myTest(){

? ? global $x,$y;

? ? $y=$x+$y;

}

myTest();

echo "变量x为:$x";

echo "变量y为:$y";

?>

输出结果为:变量x为:5变量y为:10变量x为:5变量y为:15

PHP将所有全局变量存储在一个名为$GLOBALS[index]的数组中。index保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

上面可以写成这样:

<?php

$x=5;

$y=10;

function myTest(){

? ? $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];

}

myTest();

echo "变量x为:$x";

echo "变量y为:$y";

?>

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,请在您第一次声明变量时使用static关键字:
<?php

function myTest(){

? ? static $x=5;

? ? echo $x;

? ? $x++;

? ? echo PHP_EOL;//换行符

}

myTest();

myTest();

myTest();

?>

然后每次调用该函数时,该变量将会保留着函数前一次被调用时的值。

//该变量仍是函数的局部变量。

参数作用域

参数是通过调用代码将值传递给函数的局部变量。

参数是在参数列表中声明的,作为函数声明的一部分:

<?php

function myTest($x){

? ? echo $x;

? ? echo PHP_EOL;//换行符

}

myTest(5);

?>

//在php中函数是有独立的作用域,所以局部变量会覆盖全局变量,即使局部变量中没有全局变量相同的变量,也会被覆盖

<?php

$a=5;

$b=1;

function f(){

? ? echo $a-$b;//没有输出

? ? echo PHP_EOL;

}

?>

PHP echo和print语句

在PHP中有两个基本的输出方式:echo和print。

区别:

·echo-可以输出一个或多个字符串

·print-只允许输出一个字符串,返回值总为1

//echo输出速度比print快 echo没有返回值

PHP echo语句

echo是一个语言结构,使用的时候可以不用加括号,也可以加上括号:echo或echo()。

显示字符串

下面的实例演示了如何使用echo命令输出字符串(字符串可以包含HTML标签):

<?php

$x=array("BMW","BC","PR");

? ? echo "<h2>do not give me hope</h2>";

? ? echo "别给我希望<br>";

? ? echo "do not<br>";

? ? echo "真的","别给","太奢侈了那","对我来说";

? ? echo "他的车是{$x[0]}";

?>

PHP print语句

print同样是一个语言结构,可以使用括号,也可以不使用括号:print或print()。

<?php

$x=array("BMW","BC","PR");

? ? print "<h2>do not give me hope</h2>";

? ? print "别给我希望<br>";

? ? print "do not<br>";

? ? // print "真的","别给","太奢侈了那","对我来说";

? ? print "他的车是{$x[0]}";

? ? print $x[1];

?>

PHP EOF(heredoc)使用说明

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、bash、POwerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

使用概括:

·1.必须后接分号,否则编译通不过。

·2.EOF可以使用其他字符代替,只需保证结束标识与开始标识一致。

·3.结束标识必须定格独占一行(即必须从行首开始,前后不能衔接任何空白和字符)。

·4.开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。

·5.当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当于q与qq的用法

<?php

$x="Sorry";

echo <<<sb

? ? $x<h1>do not give me hope</h1>

? ? <p>do not</p>

sb;

?>

1.以<<<EOF开始标记开始,以EOF结束标记结束,结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号。

2.开始标记和结束标记相同,比如常用大写的EOT、EOD、EOF来表示,但是不只限于那几个(也可以用:JSON、HTML等),只要保证开始标记和结束标记不在正文中出现即可。

3.位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在heredoc中,变量不需要用连接符.或,来拼接如上。

PHP数据类型

String(字符串),Integer(整型),Float(浮点型),Boolean(布尔型),Array(数组),Object(对象),NULL(空值)。

PHP字符串

一个字符串是一串字符的序列,就像“Hello world!”。

你可以将任何文本放在单引号和双引号中

上诉有例子这里不赘述

PHP整型

整数是一个没有小数的数字。

整数规则

<?php

$x=123124;

var_dump($x);

$x=-89;

var_dump($x);

$x=0x85;

var_dump($x);

$x=0474;

var_dump($x);

// echo "sorry";

?>

PHP浮点型

浮点数是带小数部分的数字,或是指数形式。

<?php

$x=12.138;

var_dump($x);

$x=2.4e3;

var_dump($x);

$x=8e-5;

var_dump($x);

$x=0474;

var_dump($x);

// echo "sorry";

?>

PHP布尔型

布尔型可以是TRUE或FALSE。

通常用于条件判断。

PHP数组

数组可以在一个变量中存储多个值。

<?php

$x=array("BMW","BC","SY");

var_dump($x);

// echo "sorry";

?>

PHP对象

对象数据类型也可以用于存储数据。

在PHP中,对象必须声明。

首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。

然后我们在类中定义数据类型,然后在实例化的类中使用数据类型:

<?php

class Car{

? ? var $color;

? ? function __construct($color="green"){

? ? ? ? $this->color=$color;

? ? }

? ? function what_color(){

? ? ? ? return $this->color;

? ? }

}

function print_vars($obj) {

? ? foreach (get_object_vars($obj) as $prop => $val) {

? ? ? echo "\t$prop = $val\n";

? ? }

? }

$ass=new Car("blue");

echo "\therbie: Properties\n";

print_vars($ass);

?>

PHP NULL值

NULL值表示变量没有值。NULL是数据类型为NULL的值。

可以通过设置变量值为NULL来清空变量数据:

<?php

$x=1;

$x=NULL;

var_dump($x);

?>

PHP类型比较

我们经常需要对PHP变量进行比较,包含松散和严格比较。

·松散比较:使用两个等号==比较,只比较值,不比较类型。

·严格比较:使用三个等号===比较,除了比较值,也比较类型。

例如,“42”是一个字符串而42是一个整数,FALSE是一个布尔值而“FALSE”是一个字符串。

<?php

if(1=="1")

? ? print 1;

echo PHP_EOL;

if(1!=="1")

? ? echo "类型不相等";

?>

0 == false: bool(true)

0 === false: bool(false)

0 == null: bool(true)

0 === null: bool(false)

false == null: bool(true)

false === null: bool(false)

"0" == false: bool(true)

"0" === false: bool(false)

"0" == null: bool(false)

"0" === null: bool(false)

"" == false: bool(true)

"" === false: bool(false)

"" == null: bool(true)

"" === null: bool(false)

PHP常量

常量是一个简单值的标识符。该值在脚本中不能改变。

一个常量由英文字母、下划线和数字组成,但数字不能作为首字母出现。(常量名不需要加$修饰符)。

//常量在整个脚本中都可以使用。

设置PHP常量

设置常量,使用define()函数,函数语法如下:

bool define(string $name,mixd $value [, bool $case_insensitive =false ] )

该函数有三个参数:

·name:必选参数,常量名称,即标志服。

·value:必选参数,常量的值。

·case_insensitive:可选参数,如果设置为TRUE,该常量则大小写不敏感。默认是大小写敏感的。

实例:

<?php

//区分大小写都常量名

define ("GREETING","Hello World!");

echo GREETING;

echo PHP_EOF;

echo greeting;//输出‘greeting’ 但是有警告 表示该常量未定义

?>

<?php

//不区分大小写都常量名

define ("GREETING","Hello World!",true);

echo GREETING;

echo "PHP_EOF";

echo greeting;

?>

常量是全局的

常量在定义后,默认是全局变量

<?php

define ("Sorry","do not give me hope");

function f(){

? ? echo Sorry;

}

f();

?>

即便常量定义在函数外也可以正常使用常量。

PHP字符串变量

字符串变量用于存储并处理文本。

PHP中的字符串变量

字符串变量用于包含有字符的值。

在创建字符串之后,我们就可以对它进行操作了。你可以直接在函数中使用字符串,或者把它存储在变量中。

<?php

$x='do not give me hope';

echo $x;

?>

PHP并置运算符

在PHP中,只有一个字符串运算符。

并置运算符(.)用于把两个字符串值连接起来。

? <?php

$x='do not give me hope';

$y='I am so sorry';

echo $x .' ? ? '. $y;

?>

PHP strlen()函数

strlen()函数返回字符串的长度(字节数)。

<?php

echo strlen("I am so sorry!");

?>

输出:14

PHP strpos()函数

Strpos()函数用于在字符串内查找一个字符或一段指定的文本。

如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回FALSE。

下面的实例在字符串“I am so sorry”中查找文本“sorry”:

<?php

echo strlen("I am so sorry!");

?>

输出为:8

//字符串中第一个字符的位置为0 但strlen从1开始

PHP运算符

在PHP中,赋值运算符=用于给变量赋值。

在PHP中,算术运算符+用于把值加在一起。

PHP算术运算符

和c语言差不多 多了一个并置运算符连接两个字符串 这里不再赘述

PHP赋值运算符

同上多了一个 a.=b 不赘述

PHP递增/递减运算符

同上

PHP比较运算符

同上 多了===(绝对等于)、<>(不等于)和!==(绝对不等于)

PHP逻辑运算符

类似python和c 还多了一个 xor(异或)x xor y 如果x和y有且仅有一个为true,则返回true

PHP数组运算符

类似比较运算符 不过是用在了数组上 多了一个集合? x+y表示x和y的集合

//相等和恒等不同一点是顺序 如果顺序都相同则恒等

三目运算符

语法格式

(expr1)?(expr2):(expr3)

如果expr1求值为true 为expr2

否为expr3

自PHP5.3起,可以省略三元运算符中间那部分。表达式expr1?:expr3在expr1求值为TRUE时返回expr1,否则返回expr3。

<?php

$x=20;

$y=($x)?:"nobody";

echo $y,PHP_EOL;

?>

在PHP7+版本多了一个NULL合并运算符??

<?php

$p=array(1,2);

$y=$p[2]??"nobody";

echo $y,PHP_EOL;

?>

输出为:nobody

//PHP中数组仍从0开始

组合比较符(PHP7+)

PHP7+支持组合比较符(combined comparison operator(也称之为太空船操作符,符号为<=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。

语法格式如下:

$c=$a<=>$b;

解析如下:

·如果$a>$b,$c的值为1。

·如果$a==$b,$c的值为0。

·如果$a<$b,则$c的值为-1。

<?php

echo 1<=>2,PHP_EOL;

echo 1<=>1,PHP_EOL;

echo 1<=>0,PHP_EOL;

?>

输出结果为:-1

? ? ? 0

? ? ? 1

运算符优先级

感觉很有用 但自己也记不住 摆烂了 要用的时候再查

PHP if…Else语句

条件语句用于根据不同条件执行不同动作。

PHP条件语句

·if语句 -在条件成立时执行代码

·if…else语句-在条件成立时执行一块代码,条件不成立时执行另一块代码

·if…elseif…else语句-在若干条件之一成立时执行一个代码块

·switch语句-在若干条件之一成立时执行一个代码块

基本和c差不多 这里不赘述

PHP Switch语句

同上 不再赘述

PHP 数组

数组能够在单个变量中存储多个值:

<?php

$a=array(1,2,3);

print $a[0];

?>

//也可以存字符串

获取数组的长度-count()函数

count()函数用于返回数组的长度(元素的数量):

<?php

$a=array(1,2,3);

print count($a);

?>

//和strpos开始不同这里从一开始

遍历数值数组

<?php

$x=array("he","l","l","o");

for($i=0;$i<count($x);$i++)

? ? print $x[$i];

?>

PHP关联数组

关联数组是使用你分配给数组的指定的键的数组。

有两种方法创建:

<?php

$x=array("he"=>'1',"l"=>'2',"l"=>'3',"o"=>'4');

print $x['he'];

?>

<?php

$x['he']=1;

$x['Sorry']=2;

print $x['he'];

?>

遍历关联数组

遍历并打印关联数组中的所有值,你可以使用foreach循环,如下

<?php

$x['he']=1;

$x['Sorry']=2;

foreach( $x as $y=>$y_value){

?? print($x[$y]);

?? print PHP_EOL;

? ? print($y);

? ? print PHP_EOL;

}

?>

PHP数组排序

数组中的元素可以按字母或数字顺序进行降序或升序排序

PHP-数组排序函数

·sort()-对数组进行升序排序

·rsort()-对数组进行降序排序

·asort()-根据关联数组的值,对数组进行升序排序

·ksort()-根据关联数组对键,对数组进行升序排序

·arsort()-根据关联数组的值,对数组进行降序排序

·krsort()-根据关联数组的键,对数组进行降序排列

sort()-对数组进行升序排列

<?php

$x=array(23,1,232,325);

sort($x);

for( $i=0;$i<count($x);$i++){

? ? print $x[$i];

? ? print PHP_EOL;

}

?>

<?php

$x=array('i',"am",'sorry!');

sort($x);

for( $i=0;$i<count($x);$i++){

? ? print $x[$i];

? ? print PHP_EOL;

}

?>

rsort()-对数组进行降序排序

用法和上差不多 不再赘述

ksort()-根据数组的键,对数组进行升序排序

同上

arsort()-根据数组的值,对数组进行降序排列

同上

krsort()-根据数组的键,对数组进行降序排序

同上

PHP超级全局变量

超级全局变量在PHP 4.1.0之后被启用,是PHP系统中自带的变量,在一个脚本中的全部作用域中都可用。

PHP? ? 超级全局变量(superglobals)

PHP中预定义了几个超级全局变量,这意味着它们在一个脚本的全部作用域中都可用。你不需要特别说明,就可以在函数及类中使用。

PHP超级全局变量列表:

·$GLOBALS

·$_SERVER

·$_REQUEST

·$_POST

·$_GET

·$_FILES

·$_ENV

·$_COOKIE

·$_SESSION

PHP $GLOBALS

$GLOBALS是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。

$GLOBALS是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。

<?php

$x=123;

$y=2;

function f(){

? ? $GLOBALS['z']=$GLOBALS['x']+$GLOBALS['y'];

}

f();

print $z;

?>1

上面的z是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问。

PHP $_SERVER

$_SERVER是一个包含了诸如头信息(header)、路径(path)以及脚本位置(script locations)等等信息的数组。这个数组中的项目由Web服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

<?php

echo $_SERVER['PHP_SELF'];

echo "<br>";

echo $_SERVER['SERVER_NAME'];

echo "<br>";

echo $_SERVER['HTTP_HOST'];

echo "<br>";

echo $_SERVER['HTTP_REFERER'];

echo "<br>";

echo $_SERVER['HTTP_USER_AGENT'];

echo "<br>";

echo $_SERVER['SCRIPT_NAME'];

?>

还有很多重要元素这里就不列举了 反正我只要看懂就完事 需要再上网查

PHP $_REQUEST

PHP$_REQUEST用于收集HTML表单提交的数据

<html>

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

Name: <input type="text" name="fname">

<input type="submit">

</form>

<?php

$name = $_REQUEST['fname'];

echo $name;

?>

</body>

</html>

以上实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。当用户通过点击“Submit”按钮提交表单数据时,表单数据将发送至<form>标签中action属性中指定的脚本文件。在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。然后,我们可以使用超级全局变量$_REQUEST来收集表单中的input字段

PHP$_POST

PHP$_POST被广泛应用于收集表单数据,在HTML form标签的指定该属性:“method=“post”。

<html>

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">

Name: <input type="text" name="fname">

<input type="submit">

</form>

<?php

$name = $_POST['fname'];

echo $name;

?>

</body>

</html>

以上实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。当用户通过点击“Submit”按钮提交表单数据时,表单数据将发送至<form>标签中action属性中指定的脚本文件。在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。然后,我们可以使用超级全局变量$_POST来收集表单中的input字段

PHP $_GET

PHP $_GET同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:“method=”get“。

$_GET也可以收集URL中发送的数据。

<html>

<body>

<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>

</body>

</html>

当用户点击链接“Test $GET“,参数”subject“和“web”将发送至“test_get.php“,你可以在”test_get.php“文件中使用$_GET变量来获取这些数据。

以下为“test_get.php”文件的代码:

<html>

<body>

<?php

echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];

?>

</body>

</html>

PHP循环-While循环

和c差不多多了个foreach-根据数组中每个元素来循环代码块

其他while、do…while、ford都差不多

PHP循环-For循环

foreach循环

每进行一次循环,当前数组元素的值就会被赋值给$value变量(数组指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个值。

<?php

$x=array("hei"=>1,"i"=>2,"was"=>3,"doing"=>4,"fine"=>5);

foreach($x as $i=>$x_value){

? ? print $x[$i].PHP_EOL;

}

?>

以上演示了一个输出给定数组键的值的循环

<?php

$x=array("hei","i","was","doing","fine");

foreach($x as $i){

? ? print $i.PHP_EOL;

}

?>

以上演示了一个输出给定数组的值的循环

PHP函数

PHP的真正威力源自于它的函数。

在PHP中,提供了超过1000个内建的函数。

PHP内建函数

需要的时候上网查嘛

创建PHP函数

函数是通过调用函数来执行的

语法

<?php

function f(){

? ? //执行代码

}

?>

PHP函数准则:

·函数的名称应该提示出它的功能

·函数名称以字母或下划线开头(不能以数字开头)

PHP函数-添加参数

和c差不多 不赘述

PHP函数-返回值

如需让函数返回一个值,使用return语句。

<?php

function f($a,$b){

? ? return $a+$b;

}

echo f(1,6);

?>

PHP魔术常量

PHP向它运行的任何脚本提供了大量的预定义常量。

不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。

有八个魔术常量它们的值随着它们在代码中的位置改变而改变。

例如 _LINE_的值就依赖于它在脚本中所处的行来决定。这些特殊的常量不区分大小写

__LINE__

文件中当前的行号

<?php

echo '这是第"'.__LINE__.'"行';

?>

__FILE__

文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

自PHP4.0.2起,__FILE__总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。

<?php

echo '该文件位于"'.__FILE__.'"';

?>

__DIR__

文件所在的目录。如果用在被包含文件中,则返回被包括的文件所在的目录。

它等价于dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。(PHP5.3.0中新增)

__FUNCTION__

函数名称(PHP4.3.0新加)。自PHP5起本常量返回该函数被定义时的名字(区分大小写)。在PHP4中该值总是小写字母的。

<?php

function textName(){

? ? echo '该函数名为"'.__FUNCTION__.'"';

}

textName();

?>

__CLASS__

类的名称(PHP4.3.0新加)。自PHP5起本常量返回该类被定义时的名字(区分大小写)。

在PHP4中该值总是小写字母的。类名包括其被声明的作用区域(例如 FOO\Bar)。注意自PHP5.4起__CLASS__对trait也起作用。当在用trait方法中时,__CLASS__是调用trait方法的类的名字。

<?php

class text {

? ? function _print() {

?? ? ? ?

?? ? ? echo '该类名为"'.__CLASS__.'"';

? ? ? ? echo '该函数名为"'.__FUNCTION__.'"';

? ? }

}

$s=new text();

$s->_print();

?>

__TRAIT__

Trait的名字(PHP5.4.0新加)。自PHP5.4.0起,PHP实现了代码复用的一个方法,称为traits。

Trait名包括其被声明的作用区域(例如 Foo\Bar)。

从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为MyHelloWorld类中定义的方法一致。优先顺序是当前类中的方法会覆盖trait方法,而trait方法又覆盖了基类中的方法。

<?php

class Base{

? ? public function sayHello(){

? ? ? ? echo 'Hello,';

? ? }

}

trait sayWorld{

? ? public function sayHello(){

? ? ? ? parent::sayHello();

? ? ? ? echo "World!";

? ? }

}

class MyHelloWorld extends Base{

? ? use sayWorld;

}

$x=new MyHelloWorld();

$x->sayHello();

?>

__METHOD__

类的方法名(PHP5.0.0新加)。返回该方法被定义时的名字(区分大小写)。

<?php

function sayHello(){

? ? echo 'Hello'.PHP_EOL."该函数名为:".__METHOD__;

}

sayHello();

?>

__NAMESPACE__

当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP5.3.0新增)。

<?php

namespace Hello;

echo "命名空间为:".__NAMESPACE__;

?>

PHP命名空间(namespace)和面向对象

PHP命名空间可以解决以下两类问题:

1.用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

2.为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码可读性。

定义命名空间

默认情况下,所有常量、类和函数名都放在全局空间下,就和PHP支持命名空间之前一样。

命名空间通过关键字namespace来声明。如果一个文件中包含命名空间,它必须在其他所有代码之前声明命名空间。语法格式:

<?php

//定义代码在’MyProject‘命名空间中

namespace MyProject;

//代码

?>

你也可以在同一个文件中定义不同的命名空间代码,如:

<?php

//定义代码在’MyProject‘命名空间中

namespace MyProject;

//代码

namespace AnotherProject;

//代码

?>

这些东西我现在菜应该还用不到 用的时候再了解吧 主要是命名空间目前我也不清楚如何使用

而面向对象之前有在java中了解 这里就不多说了

要用的时候再查

我的博客虽然不好 但你努力看到了这里? 不给我留个赞嘛0.0

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:36:11  更:2022-01-24 10:36:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 4:58:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计