• php要点


    php是一种弱类型检查语言,变量或者常量的数据类型由程序的执行顺序决定

    1、字符串

    通常使用一对单引号''或双引号""来定义字符串,但是他们在功能上有明显的差异,双引号支持变量的解析和转义字符。在解析变量时,解释器会尽可能多的取得“$”后面的字符以组成一个合法的变量名。可以用大括号把变量名括起来,以明确表示一个变量。

    <?php
           $title='php100';
            echo '$title is Website';              //结果:$title is Website
            echo "$title is Website";              //结果:php100 is Website
            echo '${title} is Website';              //结果:php100 is Website
            echo '{$title} is Website';              //结果:php100 is Website
            echo '\$title is Website';              //结果:$title is Website
    ?>

    2、 php中面向对象的使用_set()和_get(),通常命名为function_set()和function_get(),直接为私有属性的赋值操作会自动调用set()方法,直接获取私有属性的操作会自动调用get()方法。

    _isset()方法,检查属性是否被设置,_unset()方法,删除这一属性的值。成员是公有的在外部可以完成测试和删除,如果是私有的在外部访问不到,只能在内部测试。

    isset()和unset()也可以做成私有的,只需要在类中加入类似如下代码即可:

    private function_isset($nm){
    echo "当在类的外部调用使用isset()函数测定私有成员时,自动调用<br>";
    return isset($this->$nm);
    }

    unset()和isset()一样。

    3、var_dump -- 打印变量的相关信息,遇到数组时,会递归展开。

    4、static对象是属于类的,不属于任何实例对象,因此static对象能够限制外部的访问。内存从逻辑上分为4段,如下表所示,其中对象放在“堆内存”中,对象的引用放在“栈内存”中,而静态成员则是放到了“初始化静态段”,是类在第一次被加载时放入的,可以让堆内存中的每个对象所共享。

    栈内存 堆内存 静态内存
    $pig 0x9000

    $name

    $color

    0x9000

    0x9000

    性别 雄性
    $crow 0x8000

    $name

    $color

    0x8000

    0x8000

    $shark 0x7000

    $name

    $color

    0x7000

    0x7000

    类的静态变量,非常类似全局变量,能够被所有的实例共享。类的静态方法也是一样的,类似于全局函数。Java中可以使用静态对象的方式访问静态成员,如果php中可以使用对象访问静态成员,也尽量不要去使用,因为静态成员在做项目的时候目的就是使用类名去访问。类中的静态方法只能访问类的静态属性,类中的静态方法是不能访问类的非静态成员的。我们要想在本类的方法中访问本类的其他成员,需要使用$this这个引用,而$this这个引用指针是代表调用此方法的对象,而静态的方法是不用对象调用的,而是使用类名来发访问,所以根本就没有对象存在,也就没有$this这个引用了,所以就不能访问类中的非静态属性。

    因为$this不存在,在静态类中访问其他静态成员时,使用self来访问其他静态成员。访问方式为:    animal:$sex或者self:$sex

    5、final关键字 在php中final关键字只能用来定义类和方法,不能用来定义成员属性,因为final是终结的意思。不能继承,不能重写。php中定义常量使用的是define()函数,所以不能使用final来定义成员属性,使用final关键字标记的类不能被继承。

    6、self关键字  self关键字是指向类自身,也就是self关键字不指向已经实例化的任何对象,self一般指向类中的静态变量。

    7、const关键字  const是一个定义常量的关键字,在php中定义常量使用define()函数,但是在类中定义常量使用的是const关键字,类似于C中的#define。const修饰的成员的访问方式和static修饰的成员的访问方式差不多,也是使用类名,或者使用self关键字,但是不使用"$"符号,也不能使用对象来访问。访问方式为myClass:myConst或者self:myConst

    8、_toString()方法可以使对象通过echo直接打印出对象的内容,需要自己定义

    9、_clone()克隆  当需要两个一摸一样的对象时,使用new关键字创建后仍要重新复制,繁琐且容易出错,所以克隆很有必要,克隆后两个对象互不干扰。要想克隆后改变原来的内容,需要在_clone()中重写原来的方法,命名为function_clone()。

    10、_call()吸错    程序开发中,如果使用对象调用对象内部的方法时,调用的方法不存在,就会出错,程序会自动退出,但是如果使用_call(),当调用的方法不存在时,自动调用call(),给出提示,程序继续能够执行。

    也是自动调用的方式。

    function_call($function_name, $args){
    
          print "你所调用的函数:$function_name(参数:";
    
          print_r ($args);
    
          print ")不存在!<br>\n";
    
    }

    11、_autoload()  自动加载      有了这个类,脚本引擎在php出错失败前有了最后一次机会加载所需的类。_autoload()函数接收的一个参数就是用户想要加载的类名,所以在开发项目时,在组织定义类的文件名时需要按照一定的规则,最好以类名为中心,也可以加上统一的前缀或后缀形成文件名,如xxx_classname.php、classname_xxx.php就是classname.php等。

    <?php
        function __autoload($classname) {
            require_once $classname . '.php';
        }
        // MyClass1 类不存在自动调用__autoload()函数,传入参数”MyClass1”
        $obj = new MyClass1();
        // MyClass2 类不存在自动调用__autoload()函数,传入参数”MyClass2”
        $obj2 = new MyClass2();
    ?>
  • 相关阅读:
    进程同步
    CPU调度
    线程的引入
    进程互斥
    处理器状态
    操作系统
    进程的基本概念
    socket应用
    html笔记
    HTTP基本链接原理
  • 原文地址:https://www.cnblogs.com/shudonghe/p/2923439.html
Copyright © 2020-2023  润新知