跳到主要内容

php

危险

大学时候记的笔记,如今PHP已死

单双引号

<?php
$value = 'abc';
echo "变量的值为$value"; // 输出abc
echo '变量的值为$value'; // 输出$value
echo '变量的值为'.$value; // 输出abc
?>

数组

$arr = array('a', 'b', 'c');
$arr1 = array("a"=>"aaa", "b"=>"bbb", "c"=>"ccc");

echo implode('=', $arr); // a=b=c
echo $arr1[1]; // bbb

// 两个下划线开头的函数通常被称为魔术方法,包括__construct, __destruct, __call,
// __callStatic, __get, __set, __inset, __unset, __sleep, __wakeup, __clone等等。
class People {
var $id; // 可以用public/protected/private
var $name;

private $n;

// 构造函数
function __construct($id, $name, $n) {
$this->id = $id;
$this->name = $name;
$this->n = $n;
}

// 析构函数
function __destruct() {

}

// 搭配clone使用
function __clone() {
echo "clone function"
}

// 实例调用方法时,若找不到方法,则调用该函数
function __call($name, $arguments) {
echo 'call function';
}
// 除此之外还有__callStatic,对应的是类方法
// BTW,类外部调用类函数时 People::Fn,类内部调用时Self::Fn
static function __callStatic($name, $arguments) {
echo "$name".implode(',', $arguments);
}

// 获取 $p->n的值的时候,因为private,所以实际上无法访问该属性的值。
// 此时会自动调用__get函数
function __get($property) {
echo $this->$property;
}

// 修改 $p->n的值的时候,因为private,所以实际上无法修改该属性的值。
// 此时会自动调用__set函数
function __set($property, $value) {
$this->$property = $value;
}


function getInfo() {
echo $this->id.'号是'.$this->name;
}
}

$p = new People(1, 'akara');
$p->getInfo();

$p->test(); // 找不到,所以调用__call函数

echo $p->n; // 调用__get函数
$p->n = 1; // 调用__set函数

$s = clone $p; // 调用__clone函数



$data = serialize($arr); // 序列化
echo $data;
unserialize($data); // 反序列化

// 调用serialize函数时,先会查找类中是否有__sleep,如果有则调用后再序列化
// 同理,调用unserialize时,查看是否有__wakeup,调用后才反序列化。

PHP连接数据库

<?php
$link = mysqli_connect('localhost:3308', 'root', '');
mysqli_select_db($link, 'test');
$sql = "SELECT * FROM comments";
$result = mysqli_query($link, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {

}
}

mysqli_close($link)
?>