-
类属性必须定义为公有、受保护、私有之一
(为兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。)
类中的方法可以被定义为公有、私有或受保护。如果没有设置这些关键字,则该方法默认为公有。
查看全部 -
构造函数:__construct()
子类中如果定义了__construct则不会调用父类的__construct,如果需要同时调用父类的构造函数,需要使用parent::__construct()显式的调用。
析构函数:__destruct() ——销毁函数
查看全部 -
方法就是在类中的function,
类的方法也具有public,protected 以及 private 的访问控制。
查看全部 -
类中定义的变量,通常属性跟数据库中的字段有一定的关联,因此也可以称作“字段”。
属性声明是由关键字 public,protected 或者 private 开头,后面跟一个普通的变量声明来组成。
public:公开的
protected:受保护的
private:私有的查看全部 -
类通过关键字class开头,然后是类名与花括号,
在花括号中定义类的属性与方法。
类名必须是字母或下划线开头,后面紧跟若干个字母、数字或下划线,
类名最好能够表意,可以采用名词或者英文单词。
查看全部 -
看了一遍大家的评论 笔记 代码 无不是为了凑这个60而强行解释
这里重写父类方法了 实例化的也是子类对象 强行parent又何必呢?而且你们理解的累加不是+=?学习不能自欺欺人如果为了跳过检查,完成本节代码验证,这样做也可:
<?php
class Car {
public $speed = 0; //汽车的起始速度是0
public function speedUp() {
$this->speed += 10;
return $this->speed;
}
}
//定义继承于Car的Truck类
class Truck extends Car{
//public $speed = 0; //汽车的起始速度是0
public function speedUp() {
$this->speed = 60;
return $this->speed;
}
}
$car = new Truck();
$car->speedUp();
echo $car->speed;查看全部 -
//在这里设置name的session值为jobs
session_start();
$_SESSION['name']='jobs';
查看全部 -
<?php
//开始使用session
session_start();
//设置一个session
$_SESSION['test'] = time();
//显示当前的session_id
echo "session_id:".session_id();
echo "<br>";
//读取session值
echo $_SESSION['test'];
//销毁一个session
unset($_SESSION['test']);
echo "<br>";
var_dump($_SESSION);
查看全部 -
Cookie是存储在客户端浏览器中的数据,我们通过Cookie来跟踪与存储用户数据。一般情况下,Cookie通过HTTP headers从服务端返回到客户端。多数web程序都支持Cookie的操作,因为Cookie是存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置,类似于header函数的使用限制。
PHP通过setcookie函数进行Cookie的设置,任何从浏览器发回的Cookie,PHP都会自动的将他存储在$_COOKIE的全局变量之中,因此我们可以通过$_COOKIE['key']的形式来读取某个Cookie值。
PHP中的Cookie具有非常广泛的使用,经常用来存储用户的登录信息,购物车等,且在使用会话Session时通常使用Cookie来存储会话id来识别用户,Cookie具备有效期,当有效期结束之后,Cookie会自动的从客户端删除。同时为了进行安全控制,Cookie还可以设置域跟路径。
<?php
setcookie('test', time());//cookie设置
ob_start();
print_r($_COOKIE); //任何从浏览器发回的Cookie都存储在$_COOKIE的全局变量
$content = ob_get_contents();
$content = str_replace(" ", ' ', $content);
ob_clean();
header("content-type:text/html; charset=utf-8");
echo '当前的Cookie为:<br>';
echo nl2br($content);
查看全部 -
3-3元字符与转义和3-5及之后第三章跳过
查看全部 -
对象比较,当同一个类的两个实例的所有属性都相等时,可以使用比较运算符==进行判断,当需要判断两个变量是否为同一个对象的引用时,可以使用全等运算符===进行判断。
class Car {
}
$a = new Car();
$b = new Car();
if ($a == $b) echo '=='; //true
if ($a === $b) echo '==='; //false对象复制,在一些特殊情况下,可以通过关键字clone来复制一个对象,这时__clone方法会被调用,通过这个魔术方法来设置属性的值。
class Car {
public $name = 'car';
public function __clone() {
$obj = new Car();
$obj->name = $this->name;
}
}
$a = new Car();
$a->name = 'new car';
$b = clone $a;
var_dump($b);对象序列化,可以通过serialize方法将对象序列化为字符串,用于存储或者传递数据,然后在需要的时候通过unserialize将字符串反序列化成对象进行使用。
class Car {
public $name = 'car';
}
$a = new Car();
$str = serialize($a); //对象序列化成字符串
echo $str.'<br>';
$b = unserialize($str); //反序列化为对象
var_dump($b);查看全部 -
__call实现方法的重载
public function __call($name, $args) {
if ($name == 'speedDown') {
$this->speed -= 10;
}
}$args不能少
查看全部 -
属性的重载通过__set,__get,__isset,__unset来分别实现对不存在属性的赋值、读取、判断属性是否设置、销毁属性
方法的重载通过__call来实现,当调用不存在的方法的时候,将会转为参数调用__call方法,当调用不存在的静态方法时会使用__callStatic重载。
class Car { public $speed = 0; public function __call($name, $args) { if ($name == 'speedUp') { $this->speed += 10; } } } $car = new Car(); $car->speedUp(); //调用不存在的方法会使用重载 echo $car->speed;
查看全部 -
foreach($fruit as $key=>$value){
echo '<br>键是:'.$key.',对应的值是:'.$value;
}
查看全部 -
/**
* 新建一个Car类,举例说明 动态 静态 的区别(感觉也有权限控制)。 公开 私有 受保护 的访问控制(感觉是控制访问权限)
静态属性与方法可以在不实例化类的情况下调用,直接使用类名::方法名的方式进行调用。
静态属性不允许对象使用->操作符调用。
动态方法和静态方法,从形式上来看区别在于,有无static修饰
静态方法常驻内存,只能访问静态属性。效率高,内存占用高
动态方法,可以访问静态属性,也可以访问非静态属性。使用后消毁比静态多一步,所以效率低于静态,内存占用低
*/
class Car
{
public $name = '汽车';//定义一个 公开 动态 属性名字是 汽车
//public $price = '100000';//定义一个 私有 动态 属性价格为100000
protected $corlor = '白色';//定义一个 受保护 动态 属性顔色是 白色
private $price = '100000';//定义一个 私有 动态 属性价格为100000
public static $speed = '10' ;//定义一个 私有 静态 属性初始速度值为10
public function getPrice()
{
return $this->price;
}
public function getName()
{
return $this->name;
}
public function getSpeed()
{
return $this->speed;//静态方法中,$this伪变量不允许使用。可以使用self,parent,static在内部调用静态方法与属性。
}
public function getSpeed_d()
{
//动态方法、普通方法、非静态方法 都是一种方法!
echo self::$speed."<br />";//普通方法调用静态属性,同样使用self关键词
echo $this->name;
}
public static function getSpeed_j()
{
echo self::$speed."<br />";
//echo $this->name;//错。静态方法不能调用非静态属性 Fatal error: Using $this when not in object context in /var/www/example.com/public_html/index2.php on line 56 //因为 $this代表实例化对象,而这里是类,不知道 $this 代表哪个对象
}
}
echo Car::$speed;//静态属性与方法可以在 不实例化类 的情况下调用,直接使用 类名::方法名 的方式进行调用。不允许(实例化)对象使用 -> 操作符调用。
echo "<br />";
$car = new Car();//实例化 Car类 为 对象
//echo Car->speed; 不对
//echo $car->speed;也不对只能用下面的方式
echo Car::$speed;//静态属性使用::双冒号进行访问
echo "<br />";
echo $car->name;//公开外部可以访问
echo "<br />";
//echo "出错了,错误原因如下,".$php_errormsg."之后的程序不能执行";
//echo $car->corlor;//受保护外部不可访问 无结果 报错后 之下的所有 方法不能使用 属性不可调用 不清楚为什么
echo $car->speed;//静态属性不允许(实例化)对象使用 -> 操作符调用。 无结果
echo "出错了,错误原因是:".$php_errormsg;
echo "<br />";
//echo $car->price;//私有外部不可以访问,无结果.只能用下面的方式,公开方法访问 私有 受保护的属性
echo $car->getPrice();
echo "<br />";
//当然公开方法也可以访问公开属性
echo $car->getName();
echo "<br />"."到此就讲明了公开、私有、受保护的访问控制";
echo "<br />";
echo $car->getSpeed_d()."<br />"."普通方法调用 动态 静态属性";
echo "<br />";
echo $car->getSpeed_j()."<br />"."静态方法调用静态属性,不能调用非静态属性";
echo "<br />"."到此就讲明了动态 静态 的区别";
echo "<hr />";
查看全部
举报