php学习八:封装

一:在php中,用class关键字来创建一个类,即进行封装;在类里面有成员属性和方法行为组成:

1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃,用public来声明,public为共有属性,在任何地方都可以访问

 /*名称*/
    public $name = "房明";
    /*学号*/
    public $no;
    /*成绩*/
    public $score;

  

2.行为方法:和js中的函数类似,一般用public来声明

 /*唱歌*/
    public function sing($songName)
    {
        echo "学生会唱{$songName}歌";
    }

    /*跑步*/
    public function run()
    {
        return "学生去跑步了";
    }

  

特别注意:在类里面调用自己的属性和方法的时候,用到"$this->..."

 public function showSelf(){
        echo "我叫{$this->name},我的学号是{$this->no},我考了{$this->score}分,{$this->run()}";
    }

  

二:new关键字实例化对象

要想操作类里面的属性和方法,必须要实例化一个对象;

每一个对象都是独立的,通过对象改变属性只能改变自己内存空间的数据,互不影响;

通过"->"来访问类里面的属性和方法,类似于c中的指针,通过"="进行赋值;

$student1 = new Student1(); //创建内存空间,然后把地址传递给对象
$student1->name = "张三"; //通过"->"来访问类里面的属性和方法,类似于c中的指针,通过"="进行赋值
$student1->no = "1001";
$student1->score = "100";
$student1->showSelf();

  

三:引用外部类:

引用外部类:include,required;前者在错误时会出现一个警告,后者会出现一个致命的错误

在不确定外部类是不是用了一次的情况下,为了避免出现冲突,可以用include_once或者required_once

代码:我单独建了一个Student类,页面代码如下:

class Student
{
    public $name;
    public $age;
}

  然后我想在main页面用这个类,那么在main页面需要的代码如下:

include_once "Student.class.php";
$student = new Student();

  

四:构造函数和解析函数

构造函数:__construct()初始化参数,当实例化类的时候会调用这个函数,属于魔术方法,前面是两个下划线;

析构函数:__destruct(),当内存被回收的时候调用这个函数;

代码:

class Student
{
    public $name;
    public $age;
    /*************构造函数:__construct()初始化参数******************/
    public function __construct($name,$age){
        $this->name = $name;
        $this->age = $age;
    }
    public function show(){
        echo $this->name."今年".$this->age."岁了";
    }

    /************析构函数:******************/
    public function __destruct()
    {
        echo $this->name."内存被回收";
    }
}
$student = new Student("房明","18");
$student->show();  //此时打印的结果为:房明今年18岁了

  

时间: 2024-08-27 16:43:40

php学习八:封装的相关文章

Oracle学习(八):处理数据

1.知识点:能够对比以下的录屏进行阅读 SQL> --SQL语句 SQL> --1. DML语句(Data Manipulation Language 数据操作语言): insert update delete select SQL> --2. DDL语句(Data Definition Language 数据定义语言): create/alter/drop/truncate table SQL> -- create/drop view,create/drop index(sequ

springMVC3学习(八)--全局的异常处理

在springMVC的配置文件中: <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="defaultErrorView"> <value>/error</value><!-- 表示当抛出异常但没有

Spark学习八:spark streaming与flume和kafka集成

Spark学习八:spark streaming与flume和kafka集成 标签(空格分隔): Spark Spark学习八spark streaming与flume和kafka集成 一Kafka 二flume和kafka的集成 三kafka和spark streaming的集成方式一kafka推送 四kafka和spark streaming的集成方式一spark streaam主动获取 五spark stream的高级应用updateStateByKey实现累加功能 六spark stre

【C语言学习】封装和模块化思想

刚学习完C后,做的关于C的课程设计是在一个源文件中放了几百行代码,而且各个功能之间都是相互依赖的,这样就会很麻烦.因为当我要修改某个地方的时候,就会牵连着要修改喝多的地方.而在实际的程序设计中,这也是不可取的.因此,模块化和封装的思想就显得很重要了!!! ★static变量 static变量的一个显著的作用就是可以实现一个模块的封装. static存储类别的特性决定了static声明的全局变量只能被本源文件的函数引用.当在一个源文件中定义一个static全局变量后,其他文件就不能通过使用"ext

nginx学习(八):nginx配置gzip

开启gzip压缩功能,目的是 提高传输效率,节约带宽 配置gzip gzip on; #限制最小压缩,小于1字节文件不会压缩 gzip_min_length 1; #定义压缩的级别 gzip_comp_level 3; gzip_types text/plain application/javascript application/x-javascript text/javascript text/xml text/css; 验证 HTTP/1.1 200 OK Server: nginx/1.

C语言学习--八皇后问题

问题描述: 在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 程序设计: 1.一维数组a[17],数组分成三段,第一段a[0]用来标记八皇后安置完成:第二段a[1,8]用来标记列位置有无子,方便判断列冲突:第三段a[9,16]用来标记存储位置. 2.关键算法 递归判断位置,eightQueens . 3.对角线位置互斥判断, isDiagonal. 4.输出函数, printResult. 算法描述: 1.首次传入为数组a

研究生学习八问

知识来自文献!从研究没有开始直到研究做完,从头到尾,你都离不开查阅文献.查阅文献是为了不重复别人的工作,为了激发新的想法,为了站到本领域的前沿.如果你一年不看文献,那么,你已经在这个领域里out了. 研究生最忌讳的几点: 1)被动,要导师“背着走”.研究生的创新意识不能丢,要随时考虑着自己的课题应该如何改善.完善和改进,而不是等着导师来催你做什么你才去做什么. 2)以为Idea是来自导师.Idea从什么地方来?不是靠导师,要广看文献.当然,如果导师直接告诉你一个Idea,那也行,但是更多情况是你

Direct-X学习笔记--封装一个网格模型类

之前学习了网格模型的导入,绘制,了解了X文件等相关知识,但是,那样绘制比较麻烦,而且绘制一个模型需要好多代码,完全是面向过程的思维,这次,学习一下怎么把网格模型的导入以及绘制等功能封装在一个类中.顺便加深一下对World Transform的理解.感觉自己的3D思维还是没有培养起来,想绘制一个对象,绘制出来和想象中的位置相差甚远. 一.复习一下网格模型相关知识 网格模型就是一个我们在美术工具中制作好的资源,通过一些API接口我们可以将美术童鞋做好的模型很方便的导入程序中.我们只需要了解怎样从文件

cesium 学习(八) 基础绘制(点线面)

一.前言 对于一个地图GIS场景,绘制点.线.面属于是基础功能,无论是二维地图还是三维地图场景均是如此,尤其对于三维场景来说比二维应该是更加困难了些. 但是基础的简单绘制不用考虑太多,下面我们开始学习在Cesium的三维场景中如何进行基础绘制的实现. 二.使用原始Cesium的Entity方法绘制 Cesium中封装了几何对象的接口,也就是点.线.面.圆柱体.长方体.圆锥体等等,还有特殊的几何对象:corridor.ellipse.ellipsoid:以及billboard和model.但这次主