PHP -- 类语法
来源:互联网 发布:福建随行软件操作手册 编辑:程序博客网 时间:2024/06/06 00:18
1.类成员语法
<?phpclass A{ /* 访问修饰符 * java中有公用 私有 包类可见(受保护) 空(介于公用和私有之间) * php 只有三个 public private protected 不能为空 * */ public $i = 5; public static $y = "static string\n"; /* 构造方法 * */ function __construct(){ echo "这是构造方法\n"; } function fn(){ /* 方法内部无法访问字段,必须配合this * 类似js中方法访问内部字段需要使用this * */ echo $this -> i; echo '这是一个方法'; } /* 静态方法 * self指向本类(可以在静态/非静态) * $this指向本类(只能在非静态使用) * */ static function fn_2(){ echo self::$y;//相当于外部调用(A::$y) echo "这是一个静态方法\n"; }}/* 静态方法调用 * */A ::fn_2();echo A::$y;$a = new A();/* 不可思议之一 -- 多次调用构造方法 * */$a -> __construct();//print_r($a);//$a->fn();/* 如js一样动态添加属性/方法 * */$a->x = 'test add';echo $a->x;echo "\n";/* 删除$a中的一个元素 * */unset($a->x);/* 此遍历相当于js中的for in * */foreach($a as $k=>$v){ echo "$k:$v\n";}
2. 类命名空间
<?phpnamespace a\b\c;class A{ public $i = '这是A';}namespace a\b\d;/* 导入上个命名空间的class A(use 路径) * use as 用来解决命名空间中类名冲突 * new A()就是d下的A,想得到c下的A就new CA(); * *///use a\b\c\A;use a\b\c\A as CA;class A{ public $b = '这是B';}$a = new CA();print_r($a);
3. 类语法 – 多态
3.1 继承
<?php/* 类似与java final修饰后不能继承/重写 * */class A{ public $text = "测试父类继承"; function __construct() { echo "创建了一个A\n"; } function fn() { echo "这是父亲的方法\n"; }}class B extends A{ /* 在java中 构造方法不会被重写,不会被继承 * 在构造方法中调用父类构造方法,用super(),且只能调用一次且放在首行。 * * 在js中 子类不能写构造方法。但是能被继承 * * 在php中 构造方法会被重写,会被继承。 * 在构造方法中调用父类构造方法,用parent::(无次数,位置限制) * */ function __construct() { parent::__construct(); parent::__construct(); echo "创建了一个B\n"; } function fn() { /* java调用父类的方法是 super.fn(); * js super.fn(); * php 见下 parent::fn(); * */ parent::fn(); echo "这是重写A的方法"; }}$b = new B();$b->fn();//print_r($b);
3.2 抽象
// 类似于javaabstract class AbstractClass{ // 强制要求子类定义这些方法 abstract protected function getValue(); abstract protected function prefixValue($prefix); // 普通方法(非抽象方法) public function printOut() { print $this->getValue() . "\n"; }}class ConcreteClass1 extends AbstractClass{ protected function getValue() { return "ConcreteClass1"; } public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; }}$class1 = new ConcreteClass1;$class1->printOut();echo $class1->prefixValue('FOO_') ."\n";
3.3 接口
<?php// 声明一个'iTemplate'接口,类似于javainterface iTemplate{ public function setVariable($name, $var); public function getHtml($template);}// 实现接口// 下面的写法是正确的class Template implements iTemplate{ public $lists = array(); public function setVariable($name, $var) { $this->lists[$name] = $var; } public function getHtml($template) { echo "{$template}"; }}$template = new Template();$template->getHtml('测试');$template->setVariable('张三', '250');echo $template->lists['张三'];
3.4 延迟静态绑定
延迟到方法执行时,才绑定。
<?phpclass A{ const XX ="这是A的常量\n"; public function fn(){ /* 使用self:: 会绑定A中的常量XX * 使用static:: 延迟静态绑定为B的常量XX * (B中有常量XX,若无为A中的常量) * */ echo static::XX; }}class B extends A{ const XX ="这是B的常量\n";}$b = new B();$b->fn();5.5 流程处理函数die/exit 退出 include eg: include 'URL'; include_once ps:用法和includ一样,主要用于区别函数的两次导入会报错 require,require_once ps:用法和include一样,但是include出错是警告,require会终止程序执行。 return 返回值; ps:在函数中使用global $i和return $i一样/* 老版本的php加载其他php方式 * 要求 文件名和类名必须一致 * 新版本 spl_autoload_register(); * */function __autoload($cn){ return "$cn.php";}spl_autoload_register();
阅读全文
0 0
- php 类 语法
- PHP -- 类语法
- PHP 语法
- php语法
- PHP 语法
- PHP语法
- php语法
- PHP 语法
- php语法
- php 语法
- PHP 语法
- PHP 语法
- PHP 语法
- PHP语法
- PHP 语法
- PHP语法
- PHP语法
- PHP 语法
- Java编程环境的搭建
- 【Picture】
- 代码注释——TODO
- B
- CSU 1111: 三家人(水题)
- PHP -- 类语法
- C程序设计语言(二)流控制,函数与程序结构
- linux redis-3.0.0 伪分布式集群的搭建
- 从javaweb入门到spring+mvc框架(一)——spring
- C语言位运算运用二:输出二进制序列中所有的偶数位和奇数位
- http://download.csdn.net/detail/xcgh/9716451
- springioc容器学习第一天第一篇
- Six Degrees of Cowvin Bacon
- 语法