-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
php.php
272 lines (235 loc) · 6.59 KB
/
php.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
<?php
/**
* Class
* http://php.net/manual/zh/language.oop5.basic.php
*/
class NormalClass extends AbstractClassName implements InterfaceName
{
// 引用 Trait (为 PHP 提供多继承的能力,可理解为代码复制)
use TraitName;
// --> 类属性类型 <--
/**
* 公有的类成员可以在任何地方被访问,会被继承。
* @var Type
*/
public $property;
/**
* 私有的类成员则只能被其定义所在的类访问,不会被继承。
* @var Type
*/
private $property;
/**
* 受保护的类成员则可以被其自身以及其子类和父类访问,会被继承。
* @var Type
*/
protected $property;
/**
* 静态变量,也被称为类变量,所有对象的变量都是同一个。
* @var Type
*/
static $property;
// --> 方法类型 <--
/**
* 公共方法,任何对象都能访问。
* @param Type
* @return Type
*/
public function publicFunction(Type $var = null): Type
{
}
/**
* 私有方法,只有对象自身可以访问。
* @param Type
* @return Type
*/
private function privateFunction(Type $var = null): Type
{
}
/**
* 保护方法,只有自身和子类可以访问。
* @param Type
* @return Type
*/
protected function protectedFunction(Type $var = null): Type
{
}
/**
* 静态方法,可以在不实例化类的情况下执行。
* @param Type
* @return Type
*/
public static function staticFunction(Type $var = null): Type
{
}
// --> 魔术方法 <--
/**
* 具有构造函数的类会在每次创建新对象时先调用此方法,所以非常适合在使用对象之前做一些初始化工作。
* http://php.net/manual/zh/language.oop5.decon.php
* @param Type
* @return void
*/
public function __construct(Type $var = null)
{
}
/**
* 析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
* http://php.net/manual/zh/language.oop5.decon.php
* @return void
*/
public function __destruct()
{
}
/**
* 在给不可访问属性赋值时,__set() 会被调用。
* http://php.net/manual/zh/language.oop5.overloading.php
* @param string name
* @param mixed value
* @return void
*/
public function __set(string $name , mixed $value)
{
}
/**
* 读取不可访问属性的值时,__get() 会被调用。
* http://php.net/manual/zh/language.oop5.overloading.php
* @param string name
* @return mixed
*/
public function __get(string $name)
{
}
/**
* 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用。
* http://php.net/manual/zh/language.oop5.overloading.php
* @param string name
* @return bool
*/
public function __isset(string $name)
{
}
/**
* 当对不可访问属性调用 unset() 时,__unset() 会被调用。
* http://php.net/manual/zh/language.oop5.overloading.php
* @param string name
* @return void
*/
public function __unset(string $name)
{
}
/**
* 在对象中调用一个不可访问方法时,__call() 会被调用。
* http://php.net/manual/zh/language.oop5.overloading.php
* @param string name
* @param array arguments
* @return mixed
*/
public function __call(string $name, array $arguments)
{
}
/**
* 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用。
* http://php.net/manual/zh/language.oop5.overloading.php
* @param string name
* @param array arguments
* @return mixed
*/
public static function __callStatic(string $name, array $arguments)
{
}
/**
* serialize() 函数会检查类中是否存在一个魔术方法 __sleep()。
* 如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,
* 并返回一个包含对象中所有应被序列化的变量名称的数组。
* 如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误。
* http://php.net/manual/zh/language.oop5.magic.php#object.sleep
* @return array
*/
public function __sleep()
{
}
/**
* 与之相反,unserialize() 会检查是否存在一个 __wakeup() 方法。
* 如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。
* http://php.net/manual/zh/language.oop5.magic.php#object.wakeup
* @return void
*/
public function __wakeup()
{
}
/**
* __toString() 方法用于一个类被当成字符串时应怎样回应。
* 例如 echo $obj; 应该显示些什么。此方法必须返回一个字符串,
* 否则将发出一条 E_RECOVERABLE_ERROR 级别的致命错误。
* http://php.net/manual/zh/language.oop5.magic.php#object.tostring
* @return string
*/
public function __toString()
{
}
/**
* 当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。
* http://php.net/manual/zh/language.oop5.magic.php#object.invoke
* @param Type
* @return mixed
*/
public function __invoke(Type $var = null)
{
}
/**
* 自 PHP 5.1.0 起当调用 var_export() 导出类时,此静态 方法会被调用。
* http://php.net/manual/zh/language.oop5.magic.php#object.set-state
* @param array properties
* @return object
*/
public static function __set_state(array $properties)
{
}
/**
* 在使用 var_dump() 时,会被调用。
* http://php.net/manual/zh/language.oop5.magic.php#object.debuginfo
* @return array
*/
public function __debugInfo()
{
}
}
/**
* 接口
* 任何实现接口的类,都必须实现接口中的方法。
*/
interface InterfaceName
{
public function FunctionName(Type $var = null): Type;
}
/**
* 抽象类
* 抽象类中可以包含普通方法,和抽象方法。
*/
abstract class AbstractClassName
{
/**
* 继承本抽象类的类,必须实现抽象方法。
* @param Type
* @return Type
*/
abstract function abstractFunction(Type $var = null): Type;
}
/**
* Trait
* 提供代码复用能力、多继承能力
*/
trait Logger
{
public function log($message)
{
return $message;
}
}
class WriteLog
{
use Logger;
public function main()
{
return $this->log();
}
}