| |
|
开发:
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关键字用于函数内访问全局变量: $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关键字: 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 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/14 14:41:36- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |