php函数、类和对象以及类的封装、继承、类的静态方法、静态属性
1、函数
php内置函数可以直接使用,如果没有安装php扩展即可
自定义函数
//函数function 函数名 function dump($var = null){ //支出默认参数值 echo ‘<pre/>’; var_dump($var); }2、类(class)和对象( new Obj)
<?php
//定义一个人的类,现在还不是对象 class Person
{
//私有属性private $eye = '大眼睛';
private $mouth = '小嘴巴';
private $leg = '大长腿'; //构造方法 new 对象的时候自定调用
public function __construct()
{
echo __CLASS__;
}
public function run()
{
echo $this->leg;
}
//学习 会用到 腿(走路)、眼睛(看书)、嘴(念书)
public function study()
{
echo $this->leg, $this->eye, $this->mouth; } } //使用类 new以后就变成了对象 $person = new Person(); //输出 Person
$person -> run(); //输出 大长腿
$person -> study(); //输出 大长腿 大眼睛 小嘴唇3、类的封装(public, protected, private)和继承(extends)
//类的继承
class A
{
public function help()
{
echo __METHOD__;
}
//声明一个吃的方法 私有的
private function eat()
{
echo __METHOD__;
} } //子类可以继承父类所有的公共方法和属性、受保护的方法和属性,私有方法除外
//如果想使用,重写即可
class B extends A
{
public function doSomething()
{
$this -> help(); //继承了父类的方法 前提是声明为public
echo '<hr/>';
$this -> eat(); //因为吃是私有的,子类不能使用, 这里在子类中写了一个eat方法. }
//子类的吃
public function eat()
{
echo __METHOD__;
} }
$b = new B;
$b->doSomething();//输出结果A::help
B::eat4、类的静态方法和静态属性
<?php //定义一个Url 相关的类
class Url
{
public static function createUrl($arr = [])
{
echo __METHOD__;
}
public static function redirect($url = '')
{
echo __METHOD__;
}
public static function getCurrentUrl()
{
echo __METHOD__;
}
}
//把方法声明成静态方法,不需要每次都实例化(new)对象,操作方便,节省内存,效率更高
echo Url::createUrl($var='');
echo Url::redirect($url='');
echo Url::getCurrentUrl();5、类的静态属性
<?php //定义一个Url 相关的类
class Url
{
//声明为类常量
const URL = 'http://www.baidu.com'; //从5.3以后可以直接在类外部使用 const
//声明为静态变量
public static $var = 'it is very good';
public static function createUrl($arr = [])
{
echo self::URL;
echo '<br/>';
echo self::$var;
echo '<br/>';
echo __METHOD__;
}
public static function redirect($url = '')
{
echo __METHOD__;
}
public static function getCurrentUrl()
{
echo __METHOD__;
}
}
//把方法声明成静态方法,不需要每次都实例化(new)对象,操作方便,节省内存,效率更高
echo Url::createUrl($var='');
php函数、类和对象以及类的封装、继承、类的静态方法、静态属性的更多相关文章
- 类和对象的创建过程(元类,__new__,__init__,__call__)
一. type() 1.创建类的两种方式 方式一 class MyClass(object): def func(self,name): print(name) myc = MyClass() pri ...
- 【Java学习】类、对象、实例—类是对象的抽象,对象是类的实例
类.对象.实例的关系是什么,如果不能很好的理解什么是类什么是对象就无法讲清楚, 类:某种事物与另一种事物具有相似性,比如哈士奇和泰迪,我们发现他们有一些相似的特性和行为,在生物学上,他们都属于“狗”, ...
- 一.OC基础之:1,OC语言的前世今生 ,2,OC语言入门,3,OC语言与C的差异,4,面向对象,5,类和对象的抽象关系,6,类的代码创建,7,类的成员组成及访问
1,OC语言的前世今生 , 一, 在20世纪80年代早期,布莱德.麦克(Brad Cox)设计了OC语言,它在C语言的基础上增加了一层,这意味着对C进行了扩展,从而创造出一门新的程序设计语言,支持对象 ...
- 适用于app.config与web.config的ConfigUtil读写工具类 基于MongoDb官方C#驱动封装MongoDbCsharpHelper类(CRUD类) 基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD) C# 实现AOP 的几种常见方式
适用于app.config与web.config的ConfigUtil读写工具类 之前文章:<两种读写配置文件的方案(app.config与web.config通用)>,现在重新整理一 ...
- 《Java从入门到失业》第四章:类和对象(4.6):类路径
4.6类路径 4.6.1什么是类路径 前面我们讨论过包,知道字节码文件最终都会被放到和包名相匹配的树状结构子目录中.例如上一节的例子: 其实类还有一种存放方式,就是可以归档到一个jar文件中,jar文 ...
- 编写一个Shape类,具有属性:周长和面积; 定义其子类三角形和矩形,分别具有求周长的方法。 定义主类E,在其main方法中创建三角形和矩形类的对象, 并赋给Shape类的对象a、b,使用对象a、b来测试其特性。
package shape; public class Shape { //定义成员变量 private double zhouchang; private double mianji; public ...
- 30.编写一个Shape类,具有属性:周长和面积; 定义其子类三角形和矩形,分别具有求周长的方法。 定义主类E,在其main方法中创建三角形和矩形类的对象, 并赋给Shape类的对象a、b,使用对象a、b来测试其特性。
package zuoye8; public abstract class Shape { private double zhouchang ; private double mianji ; pub ...
- Python10/22--面向对象编程/类与对象/init函数
类: 语法: class关键字 类名# 类名规范 大写开头 驼峰命名法class SHOldboyStudent: # 描述该类对象的特征 school = "上海Oldboy" ...
- Java编程里的类和对象
像我们搞计算机这块的,都知道这么一件事,当前的计算机编程语言主要分为两大块,一为面向过程,二为面向对象.Java就是一门纯面向对象的语言.学习了一个月左右的Java,在下对于Java当中的类和对象有了 ...
- day24:面向对象设计与面向对象编程、类和对象
一.三大编程范式: 面向过程: 面向函数: 面向对象: 二.程序的进化论: 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 2.从上述的指令中提取重复的代码块或逻辑,组织到一起(比方说,你定 ...
随机推荐
- Java菜鸟学习笔记--面向对象篇(十五):Wrapper Class包装类
什么是包装类? 在Java里一切都是对象,除了Java中的基本数据类型(byte,short,int,long,char,float,double,boolean)不是面向对象的,这在实际使用时存在很 ...
- Oracle11g R2学习系列 之八高级数据类型
所谓的高级数据类型,就是大数据类型,即BCNB(助记词:BC牛逼)+XML数据类型. B:blob,用来存储可变长度的二进制数据. C:clob,主要用来存储可变长度的字符型数据,也就是其他数据库中提 ...
- angularjs:[1] ui-router 权限控制
1:简单的登录检查 $stateProvider .state('index', { url: "/", templateUrl: 'views/forwards/intro.ht ...
- JavaScript 语法陷阱
没有一门编程语言是完美的,JavaScript 也不例外,它语法陷阱重重,防不胜防: 加号 "with" 分号自动插入 声明提升 "eval" 多行字符串 变量 ...
- Javascript兼容收集
1.IE6背景缓存 try{ document.execCommand("BackgroundImageCache", false, true); }catch(e){} 2. e ...
- Qt编程之UI与控件布局
当然,大家都知道UI界面可以用Qt Designer在约束环境下设置编辑.ui文件,再将.ui文件转换成对应的ui_XXX.h文件,这头文件中的内容是:用C++语言实现真正的界面布局.uic -o & ...
- Spring HTTP invoker 入门
一.简介 Spring开发团队意识到RMI服务和基于HTTP的服务(如,Hessian)之间的空白.一方面,RMI使用JAVA标准的对象序列化机制,很难穿透防火墙.另一方面,Hessian/Burla ...
- poj 2411 Mondriaan's Dream_状态压缩dp
题意:给我们1*2的骨牌,问我们一个n*m的棋盘有多少种放满的方案. 思路: 状态压缩不懂看,http://blog.csdn.net/neng18/article/details/18425765 ...
- 《Java程序员面试笔试宝典》之Java变量命名有哪些规则
在Java语言中,变量名.函数名.数组名统称为标识符,Java语言规定标识符只能由字母(a~z,A~Z).数字(0~9).下划线(_)和$组成,并且标识符的第一个字符必须是字母.下划线或$.此外,标识 ...
- hdu 4400 Mines(离散化+bfs+枚举)
Problem Description Terrorists put some mines in a crowded square recently. The police evacuate all ...