《php与MySQL Web开发》-读书笔记一

1 require和include函数
相同点:用法几乎相同
唯一区别: require()函数会给出一个致命错误,而include()只给一个警告。
变种require_once和include_once:
防止错误的引入同样的函数库两次。出现重复定义的错误。而原版本的运行速度较快。

2 require用法
php不会查看require函数中文件的扩展名。使用require()语句载入文件page.html,文件内任何php命令都会被处理。但php代码放到php标记之间才会被处理成php代码。否则,代码将被视为文本或html脚本不会被执行。

// page.html

    echo "this is in php env";
?>
echo "this is out of php env and printed in text format";

注意:通常,php只解析扩展名被定义为.php的文件。而require函数则不同。

3 调用未定义的函数时,怎么办?
检查:
1 函数名称的拼写是否正确
2 函数是否存在于所用的php版本库中

4 函数名称的大小写
请注意:
函数调用不区分大小写,所以调用function_name()和Function_name()或FUNCTION_NAME()都是有效的,而且返回相同的结果。
但是, 变量名是区分大小写的。所以$Name和$name是两个不同的变量。

5 封闭php标记


     function my_fun() {
?>//这里必须有php封闭标记
my function was called.

     }
?>

6 PHP内置函数
所谓的PHP内置函数,就是在php程序的库里面规定以了的函数,比如echo,str_replace等。
在所有的php脚本中都可以使用php内置函数,但如果声明自己的函数,那它们就只能在自己的脚本中使用。
php不支持函数重载,所以不能和内置函数重名。
因此,避免再多个脚本中定义相同的函数名。

7 可变函数


function foo()
{
    echo "In foo()
\n"
; } $func = 'foo'; $func();

$func()并不是一个函数合法名称,但是它也可以正确执行,这是根据$func的值来确定。php取出保存在$func中的值,寻找具有那个名称的函数,并且调用该函数。这种函数被称为可变函数。

8 echo对变量的影响

function fn() {
    $var = "contents";
}
fn();
echo $var; // 什么也没有输出
// 如下所示的例子刚好相反。在函数外部声明一个变量,然后在函数内部使用它

function fn() {
    echo "inside the function, \$var = ".$var. "
"
; // 创建一个局部变量 $var $var = "contents 2"; // 改变局部变量 $var 的值 echo "inside the function, \$var = ".$var. "
"
; } $var = "contents 1"; fn(); echo "outside the function, \$var = ".$var. "
"
// output inside the function, $var = inside the function, $var = contents 2 outside the function, $var = contents 1 // 全局 $var 没有改变

9 global关键字
global可以用来手动指定一个在函数中定义或使用的变量具有全局作用域。

function fn() {
    global $var;
    $var = "contents";
    echo "inside the function, \$var = ". $var ."
"
; } fn(); echo "outside the function, \$var = ". $var ."
"
; // output inside the function, $var = contents outside the function, $var = contents

变量的作用域是从执行global $var这一句开始的。
当一个变量要在整个脚本中都要用到,在脚本的开始处使用关键字global

10 参数引用传递

function increment(&$value, $amount =1) {
$value=$value+$amount;
}
$value = 1;
echo $value; // print 1
increment($value);
echo $value; // print 2

11 类的属性

class A
{
    public $attribute;
    public __construct()
    {
        $this->date = date('Y-m-d');
    }

// 内部通过 __set __get 访问实现属性设置和访问
    public __set($name, $value) {
        $this->$name  = $value;
    }
    public __get($name) {
        return $this->$name;
    }
}

$a = new A();
// 在类中使用 $this 调用一个未定义的属性时,php5 会自动创建一个属性供使用,且这个被创建的属性默认方法权限是 public
echo $a->date;
echo '
'
; $a->$attribute = 5; // 该语句将间接调用__set()函数,将$name参数设置为“attribute”,而$value的值设置为5。

12 使用 final 关键字禁止继承和重载

class A
{
    public $attribute = "default value";
    final function operation(){
        echo '不能被子类重载';
    }
}

// 也可以使用 final 关键在来禁止一个类被继承。
final class A
{
    ...
}

13 PHP 面向对象的高级功能
13.1 使用 Per-class 常量

class Math
{
    const pi = 3.1415926;
}
echo "Math::pi = ".Math::pi."\n"; // 不需要初始化类就可以访问

13.2 检查类的类型和类型提示
instanceof 关键字允许检查一个对象的类型。可以检查一个对象是否是特定类的实例,是否是从某个类过来或者是否实现了某个接口。

class A {}
class B extends A {}
interface Displayable {}

{$b instanceof B} 返回 true
{$b instanceof A} 返回 true
{$b instanceof Displayable} 返回false

待续…

14 PHP 中的this self parent
this 是在类实例化的时指向其本身的引用。
self 是指向类本身,不指向任何已经实例化的对象。一般self使用来指向类中的静态变量或者常量。
parent 是指向父类的的应用,一般使用parent调用父类的构造函数或者方法。

你可能感兴趣的:(Python/PHP)