简单易懂的php入门 其一 (语法)

缘由

学一门后端语言吧!java太重了,我选择了php!

这个学习笔记也是通过记录和javascript语法层面的不同,和前端开发功能方向的不同来进行的。

语法

  1. php中所有变量都必须用$开头哦!

  2. php中有四种不同的变量作用域: localglobalstaticparameter。 函数里面定义的变量是局部变量,仅能在函数内部访问。同样,函数外面定义的变量是全局变量,函数内又不能访问。 但是,我们在函数里用global声明下就可以访问函数外面的变量了。global $x,$y;。这样。 或用$GLOBALS[index]来访问,因为PHP把所有全局变量存储在这个$GLOBALS[index]数组中了。通过变量名就可以访问了。 如果在函数里声明变量时用static修饰static $x=0,那么每次调用时仍会记住前一次被调用时的值,类似js闭包。这个值就被存着了。

  3. echo和print语句 echo可输入一个或多个字符串,没有返回值 print只允许输出一个字符串,返回值总为1

  4. php的数据类型: String字符串 Integer整型 Float浮点型 Boolean布尔型 Array数组$cars=array("Volve","BNM") Object对象,用class声明,他是可以包含属性和方法的结构。

     <?php
         class Car {
             var $color;
    
             function Car($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";
             }
         }
            
         // 对象实例化
         $herbie = new Car("white");
            
         // 展示该对象的属性
         echo "\herbie: Properties\n";
         print_vars($herbie);
     ?>     
    
     //页面最后输出:
     \herbie: Properties color = white 
    

    NULL空值,可以通过设置变量值为NULL来清空变量数据。

  5. php常量 定义常量 define(string constant_name,mixed value,case_insensitive = true) 第三个参数不设或设为false表示大小写敏感。 常量默认是全局的。而且不需要global声明来修饰就能用哇!

  6. php字符串常量 用 . 把两个字符串并置,也就是拼接在一起。 strlen("helloLily") 来计算长度值。 strpos("Hello world!","world"); 来查找第一个匹配到字符的位置。

  7. php运算符我只取一些和js不同的吧。 神奇的. ,连接字符串。 a . bvar_dump(intdiv(10, 3)); 取整运算。 比较运算符和js基本一致,不过涉及到数组时,x + y表示集合。

  8. php数组 php数组的概念比起js还要广! 它有三种:(数值数组-带有数字id键的数组),(关联数组-带有指定键的数组,多个键关联一个值),(多维数组-包含一个或多个数组的数组)。 其实就是将js数组和对象结合了。叼的不行。

    当然,关联数组的定义和遍历方式也是稍稍需要记下的。

     <?php
         $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
            
         foreach($age as $x=>$x_value){
             echo "Key=" . $x . ", Value=" . $x_value;
             echo "<br>";
         }
     ?> 
        
     //运行结果
     Key=Peter, Value=35
     Key=Ben, Value=37
     Key=Joe, Value=43
    
  9. php数组排序 sort() - 对数组进行升序排列 rsort() - 对数组进行降序排列 asort() - 根据关联数组的值,对数组进行升序排列 ksort() - 根据关联数组的键,对数组进行升序排列 arsort() - 根据关联数组的值,对数组进行降序排列 krsort() - 根据关联数组的键,对数组进行降序排列

  10. php的超级变量!

    听着就很牛逼。他们在一个脚本的全部作用域可用。无需额外说明。 $GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。 $_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。 $_REQUEST 用于收集HTML表单提交的数据。 $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”post”。 $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”get”。$_GET 也可以收集URL中发送的数据

  11. php的魔术变量 其实嘛,php作为后端语言,玩点奇技淫巧也是可以的。很多魔术变量是需要加载扩展库的,要小心。 __LINE__显示文件行号。 __FILE__文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 __DIR__文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。等价于 dirname(__FILE__)__FUNCTION__返回该函数被定义时的名字(区分大小写)。 __CLASS__类的名称。 __METHOD__类的方法名。 __NAMESPACE__当前命名空间名。

  12. php命名空间 命名空间可以解决以下两类问题:用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突;很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性

    <?php
        declare(encoding='UTF-8'); //定义多个命名空间和不包含在命名空间中的代码//在namespace前只能写这一句!!!
        namespace MyProject {
            const CONNECT_OK = 1;
            class Connection { /* ... */ }
            function connect() { /* ... */  }
        }
        namespace { // 全局代码
            session_start();
            $a = MyProject\connect();
            echo MyProject\Connection::start();
        }
    ?>
    

还有子命名空间,叼的不行。

    <?php
        namespace MyProject\Sub\Level;  //声明分层次的单个命名空间
        const CONNECT_OK = 1;
        class Connection { /* ... */ }
        function Connect() { /* ... */  }
    ?>
    //上面的例子创建了常量 MyProject\Sub\Level\CONNECT_OK,类 MyProject\Sub\Level\Connection 和函数 MyProject\Sub\Level\Connect。 

PHP 命名空间中的类名可以通过三种方式引用: 非限定名称,或不包含前缀的类名称,例如 $a=new foo(); foo::staticmethod();。如果当前命名空间是 currentnamespacefoo 将被解析为 currentnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,则 foo 会被解析为foo。 警告:如果命名空间中的函数或常量未定义,则该非限定的函数名称或常量名称会被解析为全局函数名称或常量名称。 限定名称,或包含前缀的名称,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果当前的命名空间是 currentnamespace,则 foo 会被解析为 currentnamespace\subnamespace\foo。如果使用 foo 的代码是全局的,不包含在任何命名空间中的代码,foo 会被解析为subnamespace\foo。 完全限定名称,或包含了全局前缀操作符的名称,例如, $a = new \currentnamespace\foo();\currentnamespace\foo::staticmethod();。在这种情况下,foo 总是被解析为代码中的文字名(literal name)currentnamespace\foo

常量__NAMESPACE__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。 关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。

Loading Disqus comments...
Table of Contents