面向对象 - 方法 ¶
作者:KK
发表日期:2017.02.14
方法的学习思路跟属性差不多
方法的声明 ¶
类里面有一种叫方法
(method)的元素:
class User{
public function sayName(){
echo 'Hey I am Tony!';
}
}
现在类里就声明了一个方法,方法名称叫sayName
声明方法就像声明函数一样,只是在function
关键词的前面再加个public
这样而已,如果是旧版的PHP甚至连public
都可以不需要:
class User{
function sayName(){
echo 'Hey I am Tony!';
}
}
方法的调用 ¶
声明了方法后,并不是让它摆着装饰的,而是可以拿来用的,接下来看看怎么调用:
$user = new User();
$user->sayName(); // Hey I am Tony!
方法可以有返回值,其实就像函数一样 ¶
class User{
public function getName(){
return 'Tony';
}
}
$user = new User();
$name = $user->getName();
echo $name; //Tony
可以声明多个方法 ¶
和属性一样,多复制几个命名不同就行:
class User{
public function getName(){
return 'Tony';
}
public function getAge(){
return 18 - 2;
}
}
多个方法之间可以互相调用 ¶
class User{
public function getAge(){
return 18 - 2;
}
public function 是否成年(){
$age = $this->getAge(); // $this 就是指自己这个类,调用自己的getAge方法
return $age >= 18;
}
}
$user = new User();
var_dump($user->是否成年// false
方法也可以调用属性 ¶
class User{
public $age = 0;
public function 是否成年(){
$age = $this->age; // 获取自己的age属性
return $age >= 18;
}
}
$user = new User();
var_dump($user->是否成年// false
$user->age = 19;
var_dump($user->是否成年// true
应用例子 ¶
为免出现“学了类、属性、方法”后都不知有啥用的心理,这里弄一个例子给大家参考一下
下面是一个叫做HttpRequest
的类,用于获取指定网址的HTML源代码
class HttpRequest{
//请求地址
public $url = '';
//请求后的结果内容
public $content = '';
public function get(){
$curlHandler = curl_init(); //初始化一个curl句柄
curl_setopt($curlHandler, CURLOPT_URL, $this->url); //设置请求网址
curl_setopt($curlHandler, CURLOPT_RETURNTRANSFER, 1); //后面执行exec的时候要返回内容,不要自动输出
$this->content = curl_exec($curlHandler); //执行并获取HTML文档内容
return $this->content;
}
}
$request1 = new HttpRequest();
$request1->url = 'http://www.kkh86.com/it/index.html';
$content1 = $request1->get();
file_put_contents('kk-index.html', $content1);
$request2 = new HttpRequest();
$request2->url = 'http://www.baidu.com';
$content2 = $request2->get();
file_put_contents('baidu-index.html', $content2);
var_dump([
$request1->content,
$request2->content,
]);
以上$request1和$request2是两个不同的对象,各自请求不同的网址内容
就像jQuery和JS里各个DOM对象都不相同一样,各自有各自的find范围,各自找各自的parent、children