PHP 类的一些知识点_PHP教程
PHP 类的一些知识点
1.类的定义
<code class="hljs" xml=""><!--?php class Cart{ var $items; function add_item($artnr,$num){ $this--->items[$artnr += $num; } }</code>
不能将一个类分开定义在多个文件,也不能将类定义分到多个PHP块(函数内部可以分)。
不能定义名为以下的类:
stdClass
__sleep
__wakeup
事实上不要以__开头定义类。
2.构造函数
<code class="hljs" php="">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. . . */ } }</code>
类如果没有构造函数,将调用基类构造函数。
构造函数参数可以赋默认值
<code class="hljs" xml=""><!--?php class Constructor_Cart extends Cart { function Constructor_Cart($item = 10, $num = 1) { $this--->add_item ($item, $num); } } // 买些同样的无聊老货 $default_cart = new Constructor_Cart; // 买些实在货... $different_cart = new Constructor_Cart(20, 17); ?></code>
@new 可以抑制发生在构造函数中的错误。
3.类的使用
<code class="hljs" lasso="">$cart = new Cart; $cart->add_item(10, 1);</code>
类内部使用$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.继承
<code class="hljs" php=""><!--?php class Named_Cart extends Cart { var $owner; function set_owner ($name) { $this--->owner = $name; } } ?></code>
PHP不支持多继承。
6.静态方法
<code class="hljs" php=""><!--?php class A { function example() { echo I am the original function A::example().<br /--> ; } } 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(); ?></code>
7.基类引用 parent
<code class="hljs" php=""><!--?php class A { function example() { echo I am A::example() and provide basic functionality.<br /--> ; } } 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(); ?></code>
8.序列化
<code class="hljs" php=""><!--?php // classa.inc: class A { var $one = 1; function show_one() { echo $this--->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(); ?></code>
9.魔术函数 __sleep __wakeup
10.允许数组方式访问对象属性
方法1
function obj2array(obj){
return new ArrayObject(obj, ArrayObject::ARRAY_AS_PROPS);
}
这个方法比较简单,另一个方法要继承ArrayAccess要复杂一点。
11.数组转对象
<code class="hljs" php=""> /** * 数组转对象 * @param unknown $e * @return void|StdClass */ 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; }</code>
12 自己实现的序列化与反序列化
用在redis时比较方便:
<code class="hljs" php=""> /** * 序列化对象,返回$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; }</code>

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

URL panjang, sering berantakan dengan kata kunci dan parameter penjejakan, boleh menghalang pelawat. Skrip pemendekan URL menawarkan penyelesaian, mewujudkan pautan ringkas yang sesuai untuk media sosial dan platform lain. Skrip ini sangat berharga untuk laman web individu a

Berikutan pengambilalihan berprofil tinggi oleh Facebook pada tahun 2012, Instagram mengadopsi dua set API untuk kegunaan pihak ketiga. Ini adalah API Grafik Instagram dan API Paparan Asas Instagram. Sebagai pemaju membina aplikasi yang memerlukan maklumat dari a

Laravel memudahkan mengendalikan data sesi sementara menggunakan kaedah flash intuitifnya. Ini sesuai untuk memaparkan mesej ringkas, makluman, atau pemberitahuan dalam permohonan anda. Data hanya berterusan untuk permintaan seterusnya secara lalai: $ permintaan-

Ini adalah bahagian kedua dan terakhir siri untuk membina aplikasi React dengan back-end Laravel. Di bahagian pertama siri ini, kami mencipta API RESTful menggunakan Laravel untuk aplikasi penyenaraian produk asas. Dalam tutorial ini, kita akan menjadi dev

Laravel menyediakan sintaks simulasi respons HTTP ringkas, memudahkan ujian interaksi HTTP. Pendekatan ini dengan ketara mengurangkan redundansi kod semasa membuat simulasi ujian anda lebih intuitif. Pelaksanaan asas menyediakan pelbagai jenis pintasan jenis tindak balas: Gunakan Illuminate \ Support \ Facades \ http; Http :: palsu ([ 'Google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

Pelanjutan URL Pelanggan PHP (CURL) adalah alat yang berkuasa untuk pemaju, membolehkan interaksi lancar dengan pelayan jauh dan API rehat. Dengan memanfaatkan libcurl, perpustakaan pemindahan fail multi-protokol yang dihormati, php curl memudahkan execu yang cekap

Adakah anda ingin memberikan penyelesaian segera, segera kepada masalah yang paling mendesak pelanggan anda? Sembang langsung membolehkan anda mempunyai perbualan masa nyata dengan pelanggan dan menyelesaikan masalah mereka dengan serta-merta. Ia membolehkan anda memberikan perkhidmatan yang lebih pantas kepada adat anda

Tinjauan Landskap PHP 2025 menyiasat trend pembangunan PHP semasa. Ia meneroka penggunaan rangka kerja, kaedah penempatan, dan cabaran, yang bertujuan memberi gambaran kepada pemaju dan perniagaan. Tinjauan ini menjangkakan pertumbuhan dalam PHP Versio moden
