PHP 语法

Posted Kernel001

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP 语法相关的知识,希望对你有一定的参考价值。

// php 教程 //
// //
//////////////////////////////////////

一、PHP 简介
PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")
是一种创建动态交互性站点的强有力的服务器端脚本语言。

    【特点】:
        1. 免费开源
        2. 使用广泛
        3. 简单易学
        4. 跨平台
    【用途】:
        常用于Web服务器开发中
    【文件】:
        .php 的后缀名
        
        1. 可包含在文本、htmljavascript、PHP中
        2. 服务器上执行, 返回纯html 给浏览器
    【PHP 功能】:
        1. PHP 可以生成动态页面内容
        2. PHP 可以操作(创建、打开、读取、写入、关闭)服务器上的文件
        3. PHP 可以收集表单数据
        4. PHP 可以发送和接收 cookies
        5. PHP 可以添加、删除、修改您的数据库中的数据
        6. PHP 可以限制用户访问您的网站上的一些页面
        7. PHP 可以加密数据

二、PHP 基本语法
【基本语法】
1. 基本语义结构:

1) PHP 脚本可以放在文档中的任何位置。
2) PHP 脚本以 <?php 开始,以 ?> 结束:
2. PHP 中注释
1) 单行注释
// PHP单行注释掉的代码
2) 多行注释(区块注释)
/* 多行注释掉的代码 */
【变量】
1. PHP 变量规则:
a. 变量以 $ 符号开始,后面跟着变量的名称
b. 变量名必须以字母或者下划线字符开始
c. 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
d. 变量名不能包含空格
e. 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
2. 创建(声明)变量
例:
<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>
3. 作用域 (和C 语言差不多)
a. local
b. global
c. static (静态变量,保留上次的值。仍然是局部变量)
d. parameter

            记:
                1. 在新定义的一个函数内,在访问一个全局变量时,要在变量前面加上 global 关键字
                2. 参数作用域,是在参数传参时,拷贝变量值
    【数据类型】
    
        1. String(字符串)
        2. Integer(整型)
            整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)
        3. Float(浮点型)
        4. Boolean(布尔型)
            true 和 false
        5. Array(数组)
            例:
            <?php 
                $cars=array("Volvo","BMW","Toyota");
                var_dump($cars);
            ?>
        6. Object(对象)
        7. NULL(空值)
    【类型比较】
        1. ==  
            值比较
        2. ===
            完全比较
        注:
            == 和 === 都比较值的意思,但是后者还比较两者类型。
    【数组】
        1. 数值数组
            //定义   $cars=array("Volvo","BMW","Toyota");
            //访问   echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
        2. 关联数组
            //定义   $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); 
            //访问   echo "Peter is " . $age['Peter'] . " years old.";
    【常量】
        php可以利用define()定义常量
         
        bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
         该函数有三个参数:
            name:必选参数,常量名称,即标志符。
            value:必选参数,常量的值。
            case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
        
        在访问常量时
            1. 不需要用$符号
            2. 是全局变量域
    【超级全局变量】
        PHP 超级全局变量列表:
            $GLOBALS  是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
            $_SERVER  是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组
            $_REQUEST 用于收集HTML表单提交的数据
            $_POST    用于收集表单数据
            $_GET     用于收集表单数据
            $_FILES
            $_ENV
            $_COOKIE
            $_SESSION
    【魔术常量】
     PHP 向它运行的任何脚本提供了大量的预定义常量。
        __LINE__        文件中的当前行号。
        __FILE__        文件的完整路径和文件名
        __DIR__         文件所在的目录
        __FUNCTION__    返回该函数被定义时的名字(区分大小写)
        __CLASS__       返回该类被定义时的名字(区分大小写)
        __TRAIT__       实现了代码复用的一个方法
        __METHOD__      返回该方法被定义时的名字(区分大小写)
        __NAMESPACE__   当前命名空间的名称
        
    【字符串变量】
        字符串连接
            用 . 将两个字符串连接起来
    
    【基本输出】
        1. echo
            可输出1个以上的字符串
        2. print
            只可输出1个字符串
            
        注:
            1. echo 执行速度比print快,echo无返回值,print返回值为1
            2. echo 和 print 在使用时都能 可加可不加 "()"
            3. 在输出的时候可用 "{}" 包裹在内
            
    【运算符】
        1. 和C语言 中基本一致。
        2. 支持三元运算符
        3. 组合比较符 <=>
            $c = $a <=> $b;
            解析如下:
                1)如果 $a > $b, 则 $c 的值为 1。
                2)如果 $a == $b, 则 $c 的值为 0。
                3)如果 $a < $b, 则 $c 的值为 -1。

三、PHP 控制结构
【条件控制】
1. if
和 C语言用法一样
2. switch
和 C语言用法一样
【循环控制】
1. while循环
2. for循环

    【注】
        while 和 for 循环均与 C语言用法一致
    3. foreach循环
        foreach ($array as $value)
        {
            要执行代码;
        }

四、PHP 区块化
【函数】
定义函数
需要在函数名前面 加上function 关键字,其他细节和 C语言用法一致
PHP 函数准则:
1)函数的名称应该提示出它的功能
2)函数名称以字母或下划线开头(不能以数字开头)
【命名空间】
1.声明
namespace + 模块层次1/模块层次2/ ... 等依次类推
2.使用
use + 模块层次 as 别名 这样别名就可以访问该命名空间内定义的类

五、面向对象
【类】
1.定义
和C++ 定义方式差不多。
2. 类中有$this指针变量
3. 创建对象
使用new 创建
例:
$runoob = new Site;
4. 构造函数
function __construct(参数表)
{
执行操作语句;
}

        例:
            function __construct( $par1, $par2 ) {
               $this->url = $par1;
               $this->title = $par2;
            }
    5. 析构函数
        function __destruct()
        {
            执行语句;
        }
    6. 继承
        class 子类名  extends 父类名{
        }
    7. 访问控制符
        可用访问控制符来对属性、方法进行控制 ,在其前加上访问控制符
        public:
        protected:
        private:
    8. 接口
        interface
        声明一个接口
        <?php

        // 声明一个'iTemplate'接口
        interface iTemplate
        {
            public function setVariable($name, $var);
            public function getHtml($template);
        }


        // 实现接口
        class Template implements iTemplate
        {
            private $vars = array();
          
            public function setVariable($name, $var)
            {
                $this->vars[$name] = $var;
            }
          
            public function getHtml($template)
            {
                foreach($this->vars as $name => $value) {
                    $template = str_replace('{' . $name . '}', $value, $template);
                }
         
                return $template;
            }
        }
    9.抽象类
        abstract class 类名
        该类就不能实例化,定义为了抽象类
        
    10. 常量
        利用 “const  + 变量名”  定义常量
    11. static 关键字
        1)声明类属性或方法为 static(静态),就可以不实例化类而直接访问。
        2)静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。
        3)由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用。
        4)静态属性不可以由对象通过 -> 操作符来访问。
    12. final 关键字
        1)如果父类中的方法被声明为 final,则子类无法覆盖该方法。
        2)如果一个类被声明为 final,则不能被继承。
        <?php
        class BaseClass {
           public function test() {
               echo "BaseClass::test() called" . PHP_EOL;
           }
           
           final public function moreTesting() {
               echo "BaseClass::moreTesting() called"  . PHP_EOL;
           }
        }

        class ChildClass extends BaseClass {
           public function moreTesting() {
               echo "ChildClass::moreTesting() called"  . PHP_EOL;
           }
        }
        // 报错信息 Fatal error: Cannot override final method BaseClass::moreTesting()
        ?>
    13. 调用父类构造方法
        1)PHP 不会在子类的构造方法中自动的调用父类的构造方法。
        2)要执行父类的构造方法,需要在子类的构造方法中调用 parent::__construct() 。
        
        例:
        <?php
        class BaseClass {
           function __construct() {
               print "BaseClass 类中构造方法" . PHP_EOL;
           }
        }
        class SubClass extends BaseClass {
           function __construct() {
               parent::__construct();  // 子类构造方法不能自动调用父类的构造方法
               print "SubClass 类中构造方法" . PHP_EOL;
           }
        }
        class OtherSubClass extends BaseClass {
            // 继承 BaseClass 的构造方法
        }

        // 调用 BaseClass 构造方法
        $obj = new BaseClass();

        // 调用 BaseClass、SubClass 构造方法
        $obj = new SubClass();

        // 调用 BaseClass 构造方法
        $obj = new OtherSubClass();
        ?>

以上是关于PHP 语法的主要内容,如果未能解决你的问题,请参考以下文章

PHP必用代码片段

PHP代码-psysh调试代码片段工具

超实用的php代码片段

比较有用的php代码片段

php Yoast SEO规范输出的代码片段

php Yoast SEO规范输出的代码片段