PHP类实例教程(十一):类中this关键字
PHP5中为解决变量的命名冲突和不确定性问题,引入关键字“$this”代表其所在当前对象。
$this在构造函数中指该构造函数所创建的新对象。
在类中使用当前对象的属性和方法,必须使用$this->取值。
方法内的局部变量,不属于对象,不使用$this关键字取值。
局部变量和全局变量与 $this 关键字,使用当前对象的属性必须使用$this关键字。局部变量的只在当前对象的方法内有效,所以直接使用。
注意:局部变量和属性可以同名,但用法不一样。在使用中,要尽量避免这样使用,以免混淆。
<?php
class A
{
private $a = 99;
//这里写一个打印参数的方法
public function printInt($a) {
echo "\$a是传递的参数 $a ";
echo "<br />";
echo "\$this->a 是属性 $this->a";
}
}
$a = new A(); //这里的$a可不是类中的任何变量
$a->printInt(88);
?>
用$this调用对象中的其它方法
<?php
class Math
{
//两个数值比较大小
public function Max($a, $b) {
return $a > $b ? $a : $b;
}
//三个数值比较大小
public function Max3($a, $b, $c) {
$a = $this->Max($a, $b); //调用类中的其它方法
return $this->Max($a, $c);
}
}
$math = new Math();
echo "最大值是 " . $math->Max3(99, 100, 88);
?>
使用$this调用构造函数
调用构造函数和析构函数的方法一致。
<?php
class A
{
private $a = 0;
public function __construct() {
$this->a = $this->a + 1;
}
public function doSomeThing() {
$this->__construct();
return $this->a;
}
}
$a = new A(); // 这里的$a 可不是类中的任何一个变量了
echo "现在 \$a 的值是" . $a->doSomeThing();
?>
$this 到底指的什么?
$this 就是指当前对象,我们甚至可以返回这个对象使用 $this。
<?php
class A
{
public function getASelf() {
return $this;
}
public function __toString() {
return "这是类A的实例";
}
}
$a = new A(); //创建A的实例
$b = $a->getASelf(); //调用方法返回当前实例
echo $a; //打印对象会调用它的__toString方法
?>
通过 $this 传递对象
在这个例子中,我们写一个根据不同的年龄发不同工资的类。我们设
相关文档:
运行环境:windows xp sp2
IIS v5.1
PHP 5.3.1-Win32-VC9-x86
Mysql 5.0
安装步骤:
安装IIS5.1
在 ......
安装apache
# tar -zvxf httpd-2.2.14.tar.gz
# cd httpd-2.2.14
# ./configure --prefix=/usr/local/apache2 --enable-so --enable-rewrite
# make
# make install
安装MySQL
#yum -y install mysql-server
#yum -y install mysql-devel
安装 jpeg7
建立目录:
# mkdir -p /usr/local/jpeg7
# mkdir -p /usr/l ......
我的gentoo系统flash无法显示中文字体,而且无法睡眠和待机,有功夫再研究一下如何解决吧
因为要开发一个富文本过滤的php扩展,因此研究了一下php扩展的开发技术。
php.net上的文档写的不全。还要到处找。
关于富文本过滤,就是说给一段混杂了html,js,css的文本,过滤出安全的部分,因此要做html,css解析,黑白名单设计 ......
<?
function GetIP() { //获取IP
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if ($_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if ($_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
......