<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php learning</title>
</head>
<body>
<h1>My first php page</h1>
<?php
echo "hello world";
echo "<br>"
?>
</body>
</html>
2.单行注释:同按Ctrl和/
多行注释:同按Ctrl和Shift和/
效果如下:
//这是单行注释
/* 这是多行注释 */
3.函数内访问全局变量;
(函数内变量不可被外部访问)
<?php
$x=5;
function myTest()
{
global $x;//关键字,函数内访问全局变量
$y=7;
echo "<p>测试函数内部变量<p>";
echo "<br>";
echo "变量x为: $x";//报错,$x前加global就不报错了,$x是函数外部变量
echo "<br>";
echo "变量y为: ".$y;//用点号连接,$y是函数内部变量
}
myTest();//函数调用
echo "<p>测试函数外部变量<p>";
echo "变量x为: $x";//也可以写成 echo"变量x为: ".$x;
echo "<br>";
//echo"变量y为: $y";//会报错,在函数外部不能访问专属函数内的变量
?>
4.函数内部利用全局变量进行运算;global
phpinfo(); 会显示PHP版本等信息
<?php
$x=4;
$y=9;
function mytest()
{
global $x,$y;
$y+=$x;
}
mytest();
echo $y;
phpinfo();
?>
又或者:
<?php
$x=5;
$y=10;
function mytest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
//echo $GLOBALS['y'];
}
mytest();
echo $y;//15
?>
5.函数中令局部变量始终保存供每次调用; static
<?php
function sta(){
static $num=0;
echo $num."<br>";
$num++;
}
sta();//0
sta();//1
sta();//2
sta();//3
?>
6.形参,实参
<?php
function test($x){//形参
echo $x;
}
test(5);//实参。传值给形参
?>
7.数组
<?php
$abc=array("apple","banana","camel");
echo "I love ".$abc[0]." "."I hate ".$abc[1]."<br>";
print "I love ".$abc[0]." "."I hate ".$abc[1]."<br>";
?>
8.var_dump();查看数据类型
数据类型 :string int float boolean array object Null
<?php
$abc=array("apple","banana","camel");
echo "<pre>";
var\_dump($abc);
echo "</pre>";//预先定义json格式
?>
9.if else语句
<?php
$a=3;
if($a>1){
echo "yes";
}else{
echo "no";
}//yes
?>
10.while
<?php
$a=3;
while($a>0){
echo $a;
$a--;
}//321
?>
11.switch
<?php
$col="red";
switch ($col){
case "red":
echo "红色";
break;
case "yellow":
echo "黄色";
break;
case "blue":
echo "蓝色";
break;
default:
echo "五光十色";
}//红色
?>
12.do{}while
<?php
$a=3;
do{
echo $a;
$a--;
}while($a>0);
?>//321
13.for
<?php
for($a=3;$a>0;$a--){
echo $a;
}//321
?>
14.foreach循环遍历数组
<?php
$x=array("apple","banana","orange");
foreach ($x as $value){
echo $value."<br>";//或者echo "$value<br>";
}
?>
15.类,对象,setName(),getName()
类中有属性和方法,好比水果类,有橘子,香蕉等,他们的名称,颜色,口味等都是水果类的属性,具体的水果对象就是橘子,香蕉等,不同的对象对应不同的属性值;方法即函数,就是为了执行某一任务,通过被调用而完成某项功能;
setName()和getName()如何生成:在PhpStorm中鼠标右键,点击Generate->Setters and Getters->For all methods->OK
<?php
class Fruit{
public $name;//属性
public $color;//属性
/\*\*
\* @return mixed
\*/
public function getName()//方法
{
return $this->name;//$this引用当前对象,仅用于函数内
}
/\*\*
\* @param mixed $name
\*/
public function setName($name)//方法 形参
{
$this->name = $name;//形参需要接收传来的实参,并将其赋值给当前对象的name属性
}
}
$pear=new Fruit();//用类创建对象
$pear->setName("梨子");//传实参,此时$pear这个对象的属性name就是“梨子”
echo $pear->name;//梨子
echo $pear->getName();//梨子
?>
16.手动创建set方法:set_name是自己取的方法名
<?php
class Fruit{
public $name;
public $color;
function set\_name($name){
$this->name=$name;
}
}
$pear=new Fruit();
$pear->set\_name("梨子");
echo $pear->name;//梨子
?>
其实,不用set_name或setName方法,也可以直接给公共属性赋值
<?php
class Fruit{
public $name;
public $color;
/\*function set\_name($name){
$this->name=$name;
}\*/
}
$pear=new Fruit();
//$pear->set\_name("梨子");
$pear->name="脆梨";
echo $pear->name;//脆梨
?>
17.检查对象是否属于某类
<?php
class A{
public $name;
}
$a=new A();
var\_dump($a instanceof A);//bool(true)
?>
18.魔术方法添加:在PhpStorm中鼠标右键->Generate->Implement methods…
PHP中把以两个下划线_ 开头的方法称为魔术方法(Magic methods),这些方法在PHP中充当了举足轻重的作用。
19.魔术方法: _construct() , _ _destruct()
<?php
class Stu{
public $name;
public $age;
public function sayHello(){
echo "我叫".$this->name." 我今年".$this->age."岁啦!"."<br>";
}
public function \_\_construct($name="小李子",$age=17)//构造函数,默认为空,对象第一个调用
{
//默认为空
$this->name=$name;
$this->age=$age;
}
public function \_\_destruct()//销毁析构方法 用完对象后自动调用(销毁对象前的清理)
{
// 默认为空
echo "对象销毁前的清理ing~<br>";
}
}
$stu1=new Stu();//创建对象
$stu1->sayHello();//我叫小李子 我今年17岁啦!
unset($stu1);//销毁对象,自动调用\_\_destruct() 输出:对象销毁前的清理ing~
$stu2=new Stu("杰克",22);//创建对象时,想要给对象的属性赋值或者更改属性值,前提是构造函数\_\_construct()得非空
$stu2->sayHello();//我叫杰克 我今年22岁啦!
$stu3=new Stu("奥瑞克");//同理,前提是构造函数\_\_construct()得非空,name由“小李子”改成“奥瑞克”,age默认是\_\_construct中的17
$stu3->sayHello();//我叫奥瑞克 我今年17岁啦!
//现在如果运行在浏览器中,表明对象stu2和stu3停止使用了,会自动调用\_\_destruct(),输出两遍:对象销毁前的清理ing~
?>
20.魔术方法:_ _call() , _ _callStatic()
<?php
class Stu{
public $name;
public $age;
public function \_\_call($name, $arguments)//默认
{
// 默认为空
echo "您所调用的函数名为: ".$name."(参数: "; //输出调用的不存在的方法名
print\_r($arguments); //输出被调用的不存在的方法时的参数列表
echo "不存在)<br>";
}
public static function \_\_callStatic($name, $arguments)//默认
{
//默认为空
echo "您所调用的函数名为: ".$name."(参数: ";
print\_r($arguments);
echo "不存在)<br>";
}
}
$stu1=new Stu();
$stu1->sayno();//调用的\_\_call;您所调用的函数名为: sayno(参数: Array ( ) 不存在)
$stu1->saybye("bye");//调用的\_\_call;您所调用的函数名为: saybye(参数: Array ( [0] => bye ) 不存在)
$stu1::sayno("no");//调用的\_\_callStatic;您所调用的函数名为: sayno(参数: Array ( [0] => no ) 不存在)
//\_\_call 与\_\_callStatic 都是在调用不可访问的函数时被自动调用,只是调用时格式的差别
?>
21.魔术方法:_ _set(), _ _get()
<?php
class A{
private $name;//私有变量
private $age;//私有变量
public function hello(){
echo "我是".$this->name."<br>";
}
public function \_\_set($name, $value)//默认
{//默认为空
$this->$name=$value;//这里的$name储存的是访问的私有变量的名称(这里$name=“name”),$value中储存的是手动传入的私有变量的值(这里$value="玲珑")
}
public function \_\_get($name)//默认
{//这里的$name用于存储想要获知的私有变量属性值的名称
// 默认为空
if($name=="name"){
return $this->name;}
else{
return $this->age;}
}
}
$a=new A();
$a->name="玲珑";//设置私有属性手动赋值时,会调用\_\_set方法
$a->age="24";//设置私有属性手动赋值时,会调用\_\_set方法
$a->hello();//我是玲珑今年24岁了
echo $a->name;//玲珑 想要获取name私有属性值,自动调用\_\_get方法
echo $a->age;//24 想要获取age私有属性值,直接调用\_\_get方法
?>
22.魔术方法:_ _isset(), _ _unset()
如果一个对象成员属性是公共的,就能用unset()删除对象的公有属性,但如果成员属性是私有的,照常来说是没有权限的,若将__unset()自定义的加在对象中(类中加入此方法),就可以在对象的外部去删除私有成员属性;isset()和__isset()也同理。
isset():测定某变量/成员属性是否存在,仅限公有变量/成员属性
unset():删除某变量/成员属性,仅限公有变量/成员属性
## 最后
**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
**深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**
**因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
![img](https://img-blog.csdnimg.cn/img_convert/f1099d49a550b8b315cba1d67ee6460c.png)
![img](https://img-blog.csdnimg.cn/img_convert/bd4e440af998082754d6bd41f2e88527.png)
![img](https://img-blog.csdnimg.cn/img_convert/043bbcbea855a9fd2041f19938b692c1.png)
![img](https://img-blog.csdnimg.cn/img_convert/f68a751177915a136acde9acab8b4952.png)
![img](https://img-blog.csdnimg.cn/img_convert/7436782b6742f103aefb1abc1c525729.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**
单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。**
[外链图片转存中...(img-uBpkaawn-1715594441183)]
[外链图片转存中...(img-fUr6aTiq-1715594441184)]
[外链图片转存中...(img-yqZCAY53-1715594441184)]
[外链图片转存中...(img-ik6G8nbC-1715594441184)]
[外链图片转存中...(img-a0RqvbKm-1715594441185)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!**
[**如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618653875)
**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**