«

类里的常量属性

时间:2023-3-1 21:57     作者:wen     分类: PHP


<?php
class Person{
   const birthday='2016-10-31';
   static public $name = '小明';
   public function getData(){
      return self::birthday;
   }
   public function setData(){
      return self::$name;
   }
}
//方法一直接
echo Person::birthday;//$class='Person' $class:: birthday;
echo '<hr />';
//方法二间接
$obj = new Person();echo $obj->getData();//$obj::birthday
echo '<hr />';
echo Person::$name;
echo '<hr />';
$obj = new Person();echo $obj->setData();
echo '<hr />';
?>
<?php
   //static 静态;
   //静态成员:类的成员不属于对象;
   //静态方法不能调用非静态方法;
?>
<?php
   //魔术方法
   /*
   __autoload()  当前实例化一个没有的类时,会自动调用
   __get() 
   当获取一个没有定义的属性,会自动调用
   __call() 
   当需要请求一个没有的函数是,自动调用
   __isset() 
   function __autoload($className){
      require $className.'.php';
   }
   */
class Per{
   public $arr=array('name'=>'小明');
   public function __get($name){
      //echo $name;
      return $this->arr[$name];
   }
   public function __set($name,$value){
      //echo $name.$value;
      $this->arr[$name]=$value;
   }
   // public function __call($fun,$param){
   //     die('no this '.$fun);
   // }
   // public function test(){

   // }
   // public function __isset($name){
   //     die('ne this '.$name);
   //}
}
$obj = new Per();
//echo $obj->name;
$obj->age=12;
var_dump($obj->arr);
//$obj->wen();
?>
<hr/>
<?php
   //对象的传递方式:默认按引用,按值传递 clone
   class pers{
      public $name='小明';
   }
   $obj1=new Pers();
   $obj2=$obj1;
   $obj2->name='小强';
   echo $obj1->name;
?>
<hr/>
<?php
/*
   instanceof用来检测对象是否由某类及某类的子类所实例化
 */
class Perso{
   public function __construct(){
      echo 1;
   }
   static function getData(){
      echo 3;
   }
   public function setData(){
      echo 4;
   }
}
class female extends Perso{
   public function __construct(){
      parent::__construct();
      parent::getData();
      parent::setData();
      echo 2;
   }
}
$obj3=new female();
if($obj3 instanceof female){
   echo 1;
}else{
   echo 2;
}
?>
<?php
   //面向对象辅助函数 
   //bool class_exists(class_name) 
   //检测点前脚本是否存在指定的类
   //
   //string get_class()通过对象获取类名
   //
   //array get_class_methods(class_name) 通过类名获取类里的方法
   //string get_parent_class() 通过对象或子类获取父类名称
   //bool interface_exists(interface_name) 检测点前脚本是否存在指定接口
   //bool method_exists(object, method_name) 检查类的方法是否存在
   echo (class_exists('Person'))?'存在':'不存在';
   echo get_class($obj);
   $arr4=get_class_methods('Person');
   print_r($arr4);
   echo get_parent_class('female');
   /*  
   url编码,好处便于传输特殊字符如#|&|+等
   urlencode()
   urldecode()

   base64_encode(data)
   base64_decode(data)

   */
?>

标签: PHP基础