一篇掌握网安所需PHP编程基础

<!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)

**由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值