• PHP基础学习笔记(一)


    1、初步了解PHP
    + php是一种运行在服务端的跨平台的脚本语言。

    + php语法:

    <?php echo "welcome!"; ?>
    

      php像javascript语言一样可以将标签代码放在html中,echo是php中的输出关键字

    + php中的字符串可以用单引号也可以用双引号,字符串连接符是"."号和其他语言用"+"不同

     <?php echo 'youyi'."最美"; ?>
    

     
    + 输出多条语句

     <?php
        echo "欢迎同学们!";
        echo "Welcome" . " to you!";
        echo 1+2+3+4+5;
     ?>
    

     
    2、变量

    + 用$标识符定义变量:$var

    + 规则:变量名必须以字母或下划线"_"开头
            变量名只能由字母、数字、以及下划线"_"组成,还可以包含汉字
            变量名不能包含空格,当变量名由多个单词组成时,可以用下划线隔开,也可以用驼峰式命名法来命名
      注:php中的变量名区分大小写
     
    + php中的数据类型:4种标量类型
                                2种复合类型
                                2种特殊类型

    + var_dump()方法是判断一个变量的类型与长度,并输出变量的数值,如果变量有值输的是变量的值并回返数据类型.

    + 当变量值和字符串一起输出时,用双引号括起来.

    + 当字符串很长时,可以用Heredoc结构的形式来输出字符串:

    <?php
    $string1= <<<god
    我有一只小毛驴,我从来也不骑。
    有一天我心血来潮,骑着去赶集。
    我手里拿着小皮鞭,我心里正得意。
    不知怎么哗啦啦啦啦,我摔了一身泥"
    god;
    echo $string1;
    ?>
    

    定界符<<< 来表示字符串,god是自己可以随意定义的标识符,最后用同样的标识符来做结尾。

    3、常量
    + 用define定义常量:

    <?php
    $p = "PII";
    define("PI",3.14);
    define($p,3.14);
    
    echo PI;//3.14
    echo "<br />";
    echo PII;//3.14
    ?>
    

     
    + 系统自定义常量,可以直接拿来使用:
       _FILE_:当前文件在服务器的物理位置
       _LINE_:当前代码行数
       PHP_VERSION:当前解析器的版本号
       PHP_OS:当前PHP版本的操作系统名称
       
    + 常量取值的两种方式:
      1、直接使用常量名
      2、用constant函数

    <?php
    $p="";
    //定义圆周率的两种取值
    define("PI1",3.14);
    define("PI2",3.142);
    //定义值的精度
    $height = "中";
    //根据精度返回常量名,将常量变成了一个可变的常量
    if($height == "中"){
        $p = "PI1";
    }else if($height == "低"){
        $p = "PI2";
    }
    $r=1;
    $area = constant($p)*$r*$r;
    echo $area;
    ?>
    

     
    + 判断常量是否被定义:defined函数

    4、运算符
    + php中的2种赋值运算符:"="(将值拷贝一份赋值给另一个)和"&"(引用赋值,共享内存)
      $a = $b;或$a = &$b
     
    + 比较运算符:== === != <> !=== < > <= >=
     注:php中的等于==和全等===规则和JavaScript中的类似
     
    + 逻辑运算符:逻辑与(and、&&),逻辑或(or、||),逻辑异或(xor),逻辑非(!)

    + 字符串连接运算符:"."或".="

    + 错误控制运算符:@
     
    + 算数运算符、三元运算符和其他语言类似


    5、语言结构语句
    + 遍历数组的两种方式:只取数字不取下标foreach(数组 as $v)
                          取数字和下标foreach(数组 as $r => $v)
                          

    <?php
    $students = array(
    '2010'=>'令狐冲',
    '2011'=>'林平之',
    '2012'=>'曲洋',
    '2013'=>'任盈盈',
    '2014'=>'向问天',
    '2015'=>'任我行',
    '2016'=>'冲虚',
    '2017'=>'方正',
    '2018'=>'岳不群',
    '2019'=>'宁中则',
    );//10个学生的学号和姓名,用数组存储
    
    //使用循环结构遍历数组,获取学号和姓名  
    
    foreach($students as $r => $v)
    {
        echo $r." ".$v;//输出(打印)姓名
        echo "<br />";
    }
    ?>
    

     
    6、数组
    + 数组分为两种:索引数组和关联数组
    + 数组基本操作:

    <?php
    //索引数组赋值3种方式
    $fruit = array("苹","梨子",'3'=>'香蕉');
    $fruit[2]='柿子';
    print_r($fruit);//Array ( [0] => 苹 [1] => 梨子 [3] => 香蕉 [2] => 柿子 )
    //访问索引数组内容
    echo '<br>';
    print_r($fruit['0']);//苹
    //遍历数组2种方式
    for($i=0;$i<4;$i++){
        echo '<br>数组第'.$i.'值是:'.$fruit[$i];
    }
    
    foreach($fruit as $k=>$v){
        echo '<br>第'.$k.'值是:'.$v;
    }
    
    //关联数组,关联数组和索引数组的基本操作一样
    $fruit2 = array(
        'apple' => "苹果",
        'banana' => "香蕉",
        'pineapple' => "菠萝"
    );
    echo '<br>';
    print_r($fruit2);
    ?>
    


    7、函数
    + 自定义函数
    + 可变函数
    + 内置函数
    + 判断函数是否存在-function_exists() (检测类是否存在-class_exists;检测文件是否存在-file_exists)


    8、类和对象
    + php中访问对象属性的方法或属性用->
    + 创建对象的方法:

    <?php
     class Car {
         public $name = '汽车';
         public function getName() {
             return $this->name;
         }
     }
     //1.通过new关键字来创建
     $car = new Car();
     echo $car->getName();
     //2.通过变量来创建
     $className = 'Car';
     $car = new $className();
      echo "<br>";
      echo $car->getName();
    ?>
    

     
    + php中也有三种访问控制的关键字:private、public、protected

    //默认为公有,公有的类成员可以在任何地方被访问,保护的类成员可以被自身、子类、父类访问,私有的类成员只能被其定义所在的类访问
    //如果构造函数定义成了私有方法,则不允许直接实例化对象,可以通过静态方法进行实例化
    class Car {
        private $speed = 0;//属性必须定义访问控制
        
        public function getSpeed() {
            return $this->speed;
        }
        
        protected function speedUp() {
            $this->speed += 10;
        }
        
        //增加start方法,使他能够调用受保护的方法speedUp实现加速10
        public function start() {
            $this->speedUp();
            
        }
    }
    $car = new Car();
    $car->start();
    echo $car->getSpeed();//10
    

     
    + 面向对象中function被称之为方法,面向过程中function称为函数

    + 关键字static修饰的方法为静态方法,不需要实例化,直接用::访问(类名::方法名)

    class Car {
        private static $speed = 10;
        //静态方法中,$this伪变量不允许使用。可以使用self(自己的),parent(父类的),static在内部调用静态方法与属性
        public function getSpeed() {
            return self::$speed;
        }
        
        //在这里定义一个静态方法,实现速度累加10
        public static function speedUp() {
            return self::$speed+=10;
        }
    
    
    }
    
    $car = new Car();
    Car::speedUp();  //调用静态方法加速
    echo $car->getSpeed();  //调用共有方法输出当前的速度值
    

    + 构造函数和析构函数

    <?php
    class Car {
        //增加构造函数与析构函数
        function _construct() {
            print "构造函数
    ";
        }
        
        function _destruct() {
            print "析构函数
    ";
        }
    }
    
    class Truck extends Car {
    	function _construct() {
    		print "子类构造函数
    ";
    		parent::_construct();//调用父类构造函数
    	}
    }
    $car = new Truck();//会调用子类构造函数
    unset($car);//销毁对象会调用析构函数
    ?>    
    

     
    + php中的重载

      方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。

    <?php
    class Car {
        public $speed = 10;
    
            //在这里使用重载实现speedDown方法
    	//注意call前面的横杠是两个下横杠加起来的
    	//$name是不存在的函数名,$args是不存在的函数中的参数
        public function __call($name, $args) {
            if($name == 'speedUp') {
                $this->speed += 10;
            } else if($name == 'speedDown') {
                $this->speed -= 10;
            }
        }  
    }
    $car = new Car();
    $car->speedDown(); //调用不存在的speedDown方法
    echo $car->speed;
    ?>
    

     + php中的"=="和"==="

       判断同一个类的两个实例中的属性是否相等用==

       判断两个变量是否为同一个对象的引用时用 ===

    class Car {
    }
    $a = new Car();
    $b = new Car();
    if ($a == $b) echo '==';   //true
    if ($a === $b) echo '==='; //false
    

    + 通过关键字clone来复制对象,它会调用__clone()方法

    class Car {
        public $name = 'car';
        
        public function __clone() {
            $obj = new Car();
            $obj->name = $this->name;
        }
    }
    $a = new Car();
    $a->name = 'new car';
    $b = clone $a;
    if ($a == $b) echo '==';   //true
    if ($a === $b) echo '==='; //false
    

     + 通过serialize()将对象序列化成字符串,unserialize()将字符串反序列化成对象

    2016.9.28更新



     
       

     

  • 相关阅读:
    [开源]WinForm 控件使用总结
    类型转换一种处理方式
    [算法]斐波那契数列
    [算法]1 − 2 + 3 − 4 + …
    [算法]冒泡排序
    [开源]基于Log4Net简单实现KafkaAppender
    基于Log4Net本地日志服务简单实现
    项目打jar包,怎么把第三放jar包一起打入
    将博客搬至CSDN
    将字段转换为阿拉伯数字
  • 原文地址:https://www.cnblogs.com/yy95/p/5858150.html
Copyright © 2020-2023  润新知