PHP 基础语法

 -> 和 => 及 :: 用法 

 -> 用来引用对象的成员(属性和方法)

=> 自定义数组键名

::   作用域限定操作符,用于访问静态、const、和类中重写的属性和方法

向浏览器输出数据

printint  print(arg);输出数据,可省略括号,返回值常为1
echovoid  echo(string arg1 [,... string argN]);输出数据,无返回值
printfint printf(string format [, mixd args]);与C用法基本一致
sprintfstring sprintf(string format [,mixed args])输出赋值给字符串

数据类型

标量数据类型

1.布尔型  boolean

2.整型  int

3.浮点型  float

4.字符串  string

复合数据类型

1.数组 array

2.对象  object

与类型有关的函数 

函数作用返回值
string  gettype(mixed var)获取类型
  • boolean”(从 PHP 4 起)
  • integer
  • double”(由于历史原因,如果是 float 则返回“double”,而不是“float”)
  • string
  • array
  • object
  • resource”(从 PHP 4 起)
  • NULL”(从 PHP 4 起)
  • “user function”(只用于 PHP 3,现已停用)
  • “unknown type”

boolean  settype(mixed var , string type)

转换类型成功返回TRUE,否则返回FALSE

 类型标识符函数

函数作用返回值
boolean  is_name(mixed var)判断类型是否符合符合返回TRUE,否则返回FALSE

1.is_nan  判断是否为合法数值 
2.is_array — 检测变量是否是数组
3.is_writable — 判断给定的文件名是否可写
4.is_countable - 确认变量的内容是可数值
5.is_scalar — 检测变量是否是一个标量
6.is_executable — 判断给定文件名是否可执行
7.is_tainted - 检查字符串是否被污染
8.is_file — 判断给定文件名是否为一个正常的文件
9.is_resource — 检测变量是否为资源类型
10.is_dir — 判断给定文件名是否是一个目录
11.is_string — 检测变量是否是字符串
12.is_bool — 检测变量是否是布尔型
13.is_null — 检测变量是否为 NULL
14.is_float — 检测变量是否是浮点型
15.is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的
16.is_numeric — 检测变量是否为数字或数字字符串
17.is_object — 检测变量是否是一个对象
18.is_int — 检测变量是否是整数
 

变量赋值

 按值赋值

$color = 'red';

$numner = 12; 

引用赋值 

$value1 = 'hellow';
$value2 = &$value1;   //$value1 和 $value2 都等于 "hellow"
$value2 = 'goodbye';  //$value1 和 $value2 都等于 "goodbye"

 变量作用域 

1.局部变量

2.函数参数

3.全局变量

4.静态变量  

变量的变量 

$var1 = 'var2';
$$var1 = 'aaa';

echo "$var1 $var2";    //var2 aaa
echo "$var1 ${$var1}";  //var2 aaa

魔术变量

__FILE__ : 文件的完整路径和文件名。
__LINE__ : 文本中的当前行号。
__DIR__ :文件所在当前目录。
__FUNCTION__:用在函数里面,返回函数的名字。
__CLASS__ :用在类里面,返回类的名字。
__NAMESPACE__:返回当前命名空间的名字。

超级全局变量 

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

 常量

define( )boolean define(string name ,mixed value [, bool case_insensitive])定义常量,第三个参数若为 true 则对此常量引用时不区分大小写
const/php5.3.0以后可使用const关键字在类定义外部定义常量

字符串

' '单引号不解析变量和转义序列
" "双引号解析变量和转义序列

大括号

输出中嵌入表示复杂数据类型的变量,这种语法更清晰 

echo  "The capital of the Ohio is {$capitals['ohio']}";

heredoc

会解析界定 heredoc中的文本

<?php
   echo <<<EXCERPT
        sometext...
   EXCERPT;
?>

 Nowdoc

不会解析界定在Nowdoc中的文本 

<?php
   echo <<<'EXCERPT'
        sometext...
   EXCERPT;
?>

控制结构

条件语句if用法与C中基本相同
else
elseif
switch
循环语句while用法与C中基本相同
do...while
for
foreach

//循环处理数组

1. foreach (array_expr as $value){
       statement

     }

2. foreach (array_expr as $key => $value){
       statement

     }

break 和 goto用法与C中基本相同
continue用法与C中基本相同

文件包含语句

include(path/to/filename);   //可省略括号  启用allow_url_fopen可引用远程文件

include_once(filename);    //确保文件只包含一次

require(filename);  //与 include 区别:1. 条件语句中为false时仍然包含文件 2.出错时,脚本停止运行

require_once(filename); //与上一致

函数

创建函数方法与 JavaScript 相似 

function functionName(parameters)
{
    function-body
}

按引用传递参数 

<?php
    $cost = 20.99;
    $tax = 0.05;
    function calculateCost(&$cost,$tax)
    {
        $cost += 5;
        $tax += 4;
    }
    calculateCost($cost,$tax);
    printf("\$tax: %.2f\n",$tax);    //0.05
    printf("&\$cost: %.2f",$cost);    //25.99
?>

默认参数值

//多个可选参数
function calculate($price, $price2="", $price3="")
    {
        echo $price + $price2 + $price3;
    }

返回多个值

利用list()构造可以方便的从数组中获取值 

//函数返回多个值
    function reMulti()
    {
        $user[] = "a";
        $user[] = "b";
        $user[] = "c";

        return $user;
    }
    list($a,$b,$c) = reMulti();
    echo $a,$b,$c;

数组

创建数组 

    #****** 创建数组*****
    //1.
    $arr[0] = 'a';
    $arr[1] = 'b';

    //2.递增数值索引可省略
    $arr1[] = 'a';
    $arr1[] = 'b';

    //3.关联数组
    $arr2['a'] = 'aa';
    $arr2['b'] = 'bb';

    #****** array() 创建数组***
    //1.创建索引数组
    $arr3 = array('a','b','c');

    //2.创建管理数组
    $arr4 = array(
        'a' => 'aa',
        'b' => 'bb',
        'c' => 'cc');

OOP 

类 

    class ClassName
    {
        //属性声明
        //方法声明
    }

对象

 根据预定义的类创建的对象称谓类的实例化

$obj = new className()

属性

调用属性 : $obj->attr ;

属性作用域

不声明作用域默认为 public 

public: 公共作用域,可由对象直接操作和访问

private: 只能在类中被访问,类外部和子类不能访问

protected:  只能在类中和子类访问,类外部不能访问

final: 防止被子类覆盖

static: 静态作用域

class Demo
    {
        public $name;
        private $name1;
        protected $name2;
        final $name3;
        static $name4;
    }

属性重载 

//当时图引用一个类定义中不存在的成员变量时,就会自动调用这些方法
    class ReAttr
    {
        var $attr = 1;

        public $city;
        //__set()方法设置属性
        // boolean __set([string property_name],[mixed value_to_assign])
        function __set($name , $value)
        {
            $this->$name = $value;
        }

        //__get()方法获取属性
        // boolean __get([string property_name])
        function __get($name)
        {
            echo '__get called!<br/>';
            echo 'no such variable!';
        }
    }

    $obj1 = new ReAttr();
    echo $obj1->attr;
    echo $obj1->name = 2;  //2

    echo $obj1->age;    //__get called!
                        //no such variable!

常量

    class ConstAttr
    {
        const E = '2.7182818284';
    }

    echo ConstAttr::E;

方法作用域

public: 公共作用域,可由对象直接操作和访问

private: 只能在类中被访问,类外部和子类不能访问

protected:  只能在类中和子类访问,类外部不能访问

abstract:  只在父类中声明,但在子类中实现

final: 防止被子类覆盖

static: 静态成员,不能实例化,在运行的时候自动在内存中开辟空间,不用在new

    class Visitors      //public 、 private 、 ...
    {
        public function demo_1()
        {
            echo 'demo';
        }

        private function demo_2()
        {
            echo 'demo';
        }

        //......
    }

    abstract class Employee     //只有声明为 abstract 的类才能声明抽象方法
    {                           //如果想定义一个 API ,以后将他作为实现的一个模型,就可以声明一个抽象方法
        abstract function hire();
        abstract function fire();
        //.......
    }

构造和析构函数

class Book
    {
        function __construct()    // 构造函数在对象实例化时自动执行
        {
            echo '__construct called!<br/>';
        }

        function __destruct()   //析构函数在结束时调用
        {
            echo '__destruct called!<br/>';
        }
    }

    class Manager extends Book
    {
        function __construct()
        {
            parent::__construct();  //调用父类构造函数
            echo 'aaa<br/>';
        }
    }

    new Manager;

静态类成员

    class Visitor
    {
        private static $visitors = 0;

        function __construct()
        {
            self::$visitors++;    //静态属性和方法使用self关键字和类名来调用
        }

        public static function getVisitors()
        {
            return self::$visitors;
        }
    }

    $visits = new Visitor;
    echo Visitor::getVisitors().'<br/>';    //1

    $visits1 = new Visitor;
    echo Visitor::getVisitors().'<br/>';    //2

自动加载对象

当引用未在脚本中定义的类时会自动调用这个函数

//php7中已弃用  spl_autoload_register() instead

function __autoload($name)
    {
        require_once "$name.php";
    }

高级OOP特性

对象克隆 

语法:  destinationObject  =  clone  targetObject ;

__clone()方法会在克隆期间自动执行;

    class Clon
    {
        private $var1;
        private $var2;

        function __clone()
        {
            $this->var1 = 'clone'; 
        }

        function setVar1($arg)
        {
            $this->var1 = $arg;
        }

        function getVar1()
        {
            return $this->var1;
        }

        function setVar2($arg)
        {
            $this->var2 = $arg;
        }

        function getVar2()
        {
            return $this->var2;
        }
    }

    $c1 = new Clon;
    $c1->setVar1('111');
    $c1->setVar2('222');
    echo $c1->getVar1() .'<br/>';
    echo $c1->getVar2() .'<br/>';

    echo '----- clone ------<br/>';
    $c2 = clone $c1;
    echo $c2->getVar1() .'<br/>';
    echo $c2->getVar2() .'<br/>';

接口 

    interface Iusb
    {
        function mouse();
        function keyboard();
    }

    interface Ibus
    {
        const Speed = 1333;
        function pci($arg);
    }

    class Usb implements Iusb , Ibus    //实现多个接口
    {
        function mouse()
        {
            echo 'mouse';
        }

        function keyboard()
        {
            echo 'keyboard';
        }

        function pci($arg)
        {
            echo $arg;
        }
    }

    $dev = new Usb;
    $dev->mouse();  //mouse
    $dev->pci(Ibus::Speed); //1333

抽象类 

    abstract class Abs
    {
        var $a = 1;

        function general()
        {
            echo 'genearl';
        }

        abstract function ext();

    }

    class Imp extends Abs
    {
        function __construct()
        {
            parent::general();
        }

        function ext()
        {
            echo 'implement ext';
        }
    }

    new Imp;

命名空间 

name_sp.php 

<?php

    namespace namesp;
   
   class Imp
   {
        function __construct()
        {
            echo '<br/> name_sp.php Imp class <br/>';
        }

   }
?>

 main:

    require_once 'name_sp.php';
    use namesp as sp;
    $namesp = new sp\Imp;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值