欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PHP(1)

程序员文章站 2022-04-19 23:48:53
...

1. php 的\n表示成了空格怎么不是换行
在HTML中,换行符号会被忽略,一个换行符会显示为空格符。
换行,请使用换行标签<br /> or <p></p>
以及PHP函数nl2br():

<?php
echo(nl2br("eee\nccc"));
echo "<p>aaaa</p>";
echo "<p>bbb</p>";
echo <<<eof
    <p>kkk</p>
    <p>jjjj</p>
eof;
?>

2. 运算符优先级:
优先级: && > = > and
优先级: || > = > or
3.命名空间:
类名称总是解析到当前命名空间中的名称。因此在访问系统内部或不包含在命名空间中的类名称时,必须使用完全限定名称
对于函数和常量来说,如果当前命名空间中不存在该函数或常量,PHP 会退而使用全局空间中的函数或常量。

对完全限定名称的函数,类和常量的调用在编译时解析。例如 new \A\B 解析为类 A\B。
所有的非限定名称和限定名称(非完全限定名称)根据当前的导入规则在编译时进行转换。例如,如果命名空间 A\B\C 被导入为 C,那么对
C\D\e() 的调用就会被转换为 A\B\C\D\e()。
在命名空间内部,所有的没有根据导入规则转换的限定名称均会在其前面加上当前的命名空间名称。例如,在命名空间 A\B 内部调用
C\D\e(),则 C\D\e() 会被转换为 A\B\C\D\e() 。
非限定类名根据当前的导入规则在编译时转换(用全名代替短的导入名称)。例如,如果命名空间 A\B\C 导入为C,则 new C() 被转换为
new A\B\C() 。 在命名空间内部(例如A\B),对非限定名称的函数调用是在运行时解析的。例如对函数 foo()
的调用是这样解析的: 在当前命名空间中查找名为 A\B\foo() 的函数 尝试查找并调用 全局(global) 空间中的函数 foo()。
在命名空间(例如A\B)内部对非限定名称或限定名称类(非完全限定名称)的调用是在运行时解析的。下面是调用 new C() 及 new
D\E() 的解析过程: new C()的解析: 在当前命名空间中查找A\B\C类。 尝试自动装载类A\B\C。

OOP

4.OOP

  1. 类属性必须定义为公有,受保护,私有之一。如果用 var 定义,则被视为公有。
echo $obj->public; // 这行能被正常执行
echo $obj->protected; // 这行会产生一个致命错误
echo $obj->private; // 这行也会产生一个致命错误
$obj->printHello(); // 输出 Public、Protected 和 Private
  1. 类中的方法可以被定义为公有,私有或受保护。如果没有设置这些关键字,则该方法默认为公有。
  2. 接口中定义的所有方法都必须是公有,这是接口的特性。
    类可以实现多个接口,用逗号来分隔多个接口的名称。
  3. 在定义和使用常量的时候不需要使用 $ 符号。
class MyClass
{
    const constant = '常量值';

    function showConstant() {
        echo  self::constant . PHP_EOL;
    }
}
echo MyClass::constant . PHP_EOL;

$classname = "MyClass";
echo $classname::constant . PHP_EOL; // 自 5.3.0 起

$class = new MyClass();
$class->showConstant();
echo $class::constant . PHP_EOL; // 自 PHP 5.3.0 起
  1. 抽象类
abstract class AbstractClass
{
 // 强制要求子类定义这些方法
    abstract protected function getValue();
    abstract protected function prefixValue($prefix);

    // 普通方法(非抽象方法)
    public function printOut() {
        print $this->getValue() . PHP_EOL;
    }
}

此外,子类方法可以包含父类抽象方法中不存在的可选参数。 例如,子类定义了一个可选参数,而父类抽象方法的声明里没有,则也是可以正常运行的。

abstract class AbstractClass
{
    // 我们的抽象方法仅需要定义需要的参数
    abstract protected function prefixName($name);

}
 public function prefixName($name, $separator = ".") 
  1. static

静态属性不能通过一个类已实例化的对象来访问(但静态方法可以)。 由于静态方法不需要通过对象即可调用,所以伪变量 $this
在静态方法中不可用。
自 PHP 5.3.0 起,可以用一个变量来动态调用类。但该变量的值不能为关键字 self,parent 或 static。

print Foo::$my_static . PHP_EOL;
$foo = new Foo();

print $foo->staticValue() . PHP_EOL;
$classname = "MyClass";
echo $classname::constant . PHP_EOL; // 自 5.3.0 起
$class = new MyClass();
echo $class::constant . PHP_EOL; // 自 PHP 5.3.0 起
  1. final

PHP 5 新增了一个 final 关键字。如果父类中的方法被声明为 final,则子类无法覆盖该方法。如果一个类被声明为final,则不能被继承。

  1. 调用父类构造方法

PHP 不会在子类的构造方法中自动的调用父类的构造方法。要执行父类的构造方法,需要在子类的构造方法中调用parent::__construct() 。