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(); 
?>

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/16470.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论