PHP 类的一些知识点

1.类的定义

items[$artnr += $num;
   }
}

不能将一个类分开定义在多个文件,也不能将类定义分到多个PHP块(函数内部可以分)。
不能定义名为以下的类:
stdClass
__sleep
__wakeup
事实上不要以__开头定义类。

2.构造函数

class Cart {
    var $todays_date;
    var $name;
    var $owner;
    var $items = array(VCR, TV);
    function Cart() {
        $this->todays_date = date(Y-m-d);
        $this->name = $GLOBALS['firstname'];
        /* etc. . . */
    }
}

类如果没有构造函数,将调用基类构造函数。
构造函数参数可以赋默认值

add_item ($item, $num);
    }
}

// 买些同样的无聊老货
$default_cart = new Constructor_Cart;
// 买些实在货...
$different_cart = new Constructor_Cart(20, 17);
?>

@new 可以抑制发生在构造函数中的错误。

3.类的使用

$cart = new Cart;
$cart->add_item(10, 1);

类内部使用$this代表自身。

4.类相关函数

__autoload — 尝试加载未定义的类
call_user_method_array — 调用一个用户方法,同时传递参数数组(已废弃)
call_user_method — 对特定对象调用用户方法(已废弃)
class_alias — 为一个类创建别名
class_exists — 检查类是否已定义
get_called_class — 后期静态绑定(”Late Static Binding”)类的名称
get_class_methods — 返回由类的方法名组成的数组
get_class_vars — 返回由类的默认属性组成的数组
get_class — 返回对象的类名
get_declared_classes — 返回由已定义类的名字所组成的数组
get_declared_interfaces — 返回一个数组包含所有已声明的接口
get_declared_traits — 返回所有已定义的 traits 的数组
get_object_vars — 返回由对象属性组成的关联数组
get_parent_class — 返回对象或类的父类名
interface_exists — 检查接口是否已被定义
is_a — 如果对象属于该类或该类是此对象的父类则返回 TRUE
is_subclass_of — 如果此对象是该类的子类,则返回 TRUE
method_exists — 检查类的方法是否存在
property_exists — 检查对象或类是否具有该属性
trait_exists — 检查指定的 trait 是否存在

5.继承

owner = $name;
    }
}
?>

PHP不支持多继承。

6.静态方法


;
    }
}

class B extends A {
    function example() {
        echo I am the redefined function B::example().

;
        A::example();
    }
}

// A 类没有对象,这将输出
//   I am the original function A::example().

A::example();

// 建立一个 B 类的对象
$b = new B;

// 这将输出
//   I am the redefined function B::example().

//   I am the original function A::example().

$b->example();
?>

7.基类引用 parent


;
    }
}

class B extends A {
    function example() {
        echo I am B::example() and provide additional functionality.

;
        parent::example();
    }
}

$b = new B;

// 这将调用 B::example(),而它会去调用 A::example()。
$b->example();
?>

8.序列化

one;
      }
  }

// page1.php:
  include(classa.inc);

  $a = new A;
  $s = serialize($a);
  // 将 $s 存放在某处使 page2.php 能够找到
  $fp = fopen(store, w);
  fwrite($fp, $s);
  fclose($fp);

// page2.php:
  // 为了正常解序列化需要这一行
  include(classa.inc);

  $s = implode(, @file(store));
  $a = unserialize($s);

  // 现在可以用 $a 对象的 show_one() 函数了
  $a->show_one();
?>

9.魔术函数 __sleep __wakeup

10.允许数组方式访问对象属性

方法1

function obj2array(obj){
return new ArrayObject(obj, ArrayObject::ARRAY_AS_PROPS);
}
这个方法比较简单,另一个方法要继承ArrayAccess要复杂一点。

11.数组转对象

    /**
     * 数组转对象
     * @param unknown $e
     * @return voidStdClass
     */
    public static function arrayToObject($e){
        if( gettype($e)!='array' ) return;
        foreach($e as $k=>$v){
            if( gettype($v)=='array'  getType($v)=='object' )
                $e[$k]=(object)arrayToObject($v);
        }
        return (object)$e;
    }

12 自己实现的序列化与反序列化

用在redis时比较方便:

    /**
     * 序列化对象,返回$json字符串
     */
    public static function serialize($model){
        //return serialize($model);
        if(!$model)return '{}';
        $json='{';
        foreach($model as $key2=>$value2){
            if($json!='{')$json.=',';
            $json.=$key2:$value2;
        }
        $json.='}';

        return $json;
    }
    public static function unserialize($json){
        $json=str_replace('{', '', $json);
        $json=str_replace('}','',$json);
        $array=explode(',', $json);
        $result=[];
        foreach($array as $key =>$value){
            $temparr=explode(',',$value);
            $temparr1=explode(':',$temparr[0]);

            if(count($temparr1)==0)continue;
            $result[$temparr1[0]]=trim( $temparr1[1],'');
        }
        //$obj=  (object)($result);

        return obj2array($result);
        //return $result;
    }

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, json
, 对象
, 函数
, return
, wakeup
, 方法
, 构造方法 数组
, JSON”未定义
, 废弃函数
, json类
, is_a()
, is_subclass_of函数
object转json对象
php知识点、php知识点总结、php基础知识点、php高级知识点、php重要知识点,以便于您获取更多的相关知识。

时间: 2024-09-23 16:36:55

PHP 类的一些知识点的相关文章

PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间_php实例

PHP前言: •动态地创建属性和方法 •对象的复制 •对象的比较 •加载指定的文件 •自动加载类文件 •命名空间 示例 1.类的相关知识点 3(动态地创建属性和方法) class/class3.php <?php /** * 类的相关知识点 3(动态地创建属性和方法) */ // 用于演示如何动态地创建属性(这就是 php 中所谓的重载) class Class1 { // __set 魔术方法,当设置的属性不存在或者不可访问(private)时就会调用此函数 public function _

js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码_javascript技巧

复制代码 代码如下: <?php /* <?xml version="1.0" encoding="utf-8"?> <article> <item> <title name="t1"></title> <content>content1</content> <pubdate>2009-10-11</pubdate> </ite

【书】《数据库面试笔试宝典系列》简介

[书]<Oracle数据库面试笔试宝典>相关内容 目录 目录 - 1 - 内容介绍 - 8 - 作者简介 - 8 - 序言 - 9 - 前言 - 10 - 上篇 面试笔试经验技巧篇 - 13 - 第1章 求职经验分享 - 13 - 1.1 踩别人没有踩过的坑,犯别人没有犯过的错 - 13 - 1.2 只要肯钻研,就能成大咖 - 14 - 1.3 普通DBA的逆袭经验 - 14 - 第2章 数据库程序员的求职现状 - 15 - 2.1 当前市场对于数据库程序员的需求如何?待遇如何? - 15 -

JavaScript知识点总结(十一)之js中的Object类详解_javascript技巧

JavaScript中的Object对象,是JS中所有对象的基类,也就是说JS中的所有对象都是由Object对象衍生的.Object对象主要用于将任意数据封装成对象形式. 一.Object类介绍 Object类是所有JavaScript类的基类(父类),提供了一种创建自定义对象的简单方式,不再需要程序员定义构造函数. 二.Object类主要属性 1.constructor:对象的构造函数. 2.prototype:获得类的prototype对象,static性质. 三.Object类主要方法 1

PHP类相关知识点实例总结_php技巧

本文实例总结了PHP类相关知识点.分享给大家供大家参考,具体如下: 最终类与最终方法 如果父类中的方法被声明为 final,则子类无法覆盖该方法.如果一个类被声明为 final,则不能被继承. final class a{} class a{ final public function A(){} } 抽象类与抽象方法 abstract class a { public abstract function func(); } class A extends a{ public function

PHP面向对象中的重要知识点(三)

1. namespace:       和C++中的名字空间很像,作用也一样,都是为了避免在引用较多第三方库时而带来的名字冲突问题.通过名字空间,即便两个class的名称相同,但是因为位于不同的名字空间内,他们仍然可以被精确定位和区分.第一次看到PHP的名字空间语法时,感觉和C++相比在语法上是非常非常相似的,然而在写点儿小例子做做实验的时候才发现,他们的差别还是很大的,为了避免以后忘记,所以这里特别将其记录了下来.见如下代码:   复制代码 <?php //in Test2.php names

PHP面试题目与基础知识点

PHP软件工程师的面试题 1. 基本知识点 HTTP协议中几个状态码的含义:503 500 401 200 301 302... Include require include_once require_once 的区别. PHP/Mysql中几个版本的进化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改进等等. HEREDOC介绍 写出一些php魔幻方法; 一些编译php时的configure 参数 向php传入参数的两种方法. (mysql)请写出数据类型(int char

JAVA中最为关键的几个知识点

想成为JAVA高手,你至少要非常熟悉并能自如地应用如下几个知识点: 1.序列化机制.(有人认为它并不是重要的技术,我以我的经验声明,这是JAVA平台第一重要的知识点.) 2.RTTI机制 3.CALLBACK机制 4.反射机制 序列化: 是一切对象深度CLONE,对象的存储与恢复,对象的远程调用的基础,也就是说它是对象池化管理,分布式引用的基础,想想J2EE平台如果不靠它能做什么? RTTI: 是一切封装的基础,没有它,接口,抽象类,父类就没有意义,如果封装没有了,同样没有父类,子类就不叫子类了

PHP PEAR DB类安装与使用实例详解

在PHP网站开发中,由于其支持各种数据库引擎,如Mysql,Mssql,Pgsql,sqlite等,并对各种数据库系统都提供了不同的函数作为接口,给PHP网站开发者带来很多便利,但同时也带来了平台移植性的问题,随着底层数据库的改变,PHP代码也必须改变.对于这个问题,有各种解决方法,如使用PHP ADODB类,PHP PEAR DB类或者自行编写PHP DB类,将各种数据库的函数操作聚合在一起等,今天和大家分享如何安装使用PHP PEAR DB类,以实现不同数据库的访问功能. 准备工作 1.在使