一个自己学习总结的php类学习笔记

1,类:类是一组具有相同数据结构和相同操作的对象的集合,类是对象的抽象,他将一组数据属性和在数据上的一组合法操作抽象封装,类好比是一个对象模板,基于类就可以生成多个具有不同属性值的对象。

2,创建类:

Class classname

{

}

3,为该类添加属性和方法:只需要在类中声明变量即可。声明了属性之后可以获取该属性的值。

⑴创建属性:Class classname

{

Var $myName;

Var $myAge;

}

⑵创建方法:class classname

{

Var $myName;

Var $myAge;

Function getName()

{

}

Function getAget($arg1,$arg2)

{

}

}

注:以上创建了两个类的方法,方法名称分别为:getName,getAge

4,构造函数:大多数的类都有构造函数,当一个类实例被调用时,将调用构造函数,通常在构造函数中将执行一些初始化的操作。

⑴在类中声明构造函数:同声明其他函数一样,但是构造函数的名称是固定的。即函数名必须为:__construct()

注:构造函数可以由编程人员主动调用,但大部分时候,都是在创建类对象实例的时候自动调用。构造函数也可以传递参数,这些参数可以在调用类的时候传递。

声明构造函数的方法:

Class classname

{

Function __construct($param)

{

代码

}}

⑵析构函数:是一种当对象被销毁时,无论使用了unset()或简单的脱离范围,都会被自动调用的函数。

与构造函数的名称类似,一个类的析构函数名称必须是_destruct()

5,类的实例化:声明了一个类之后,如果要使用该类,必须创建该类的一个实例,实际上也可以将该类作为一个变量,在使用之前必须手动定义。用关键字“new”来创建

一个类的实例。

<?php

Class classname

{

Function __construct($myName)

{echo (“我的名字是:$myName<br>”);}

}

$name1=new myName(“小猪”);

$name2=new myName(“小狗”); //创建了2个该类的实例

?>

注:new myName (“小猪”) 中的参数“小猪”会被 自动传递到构造函数,然后构造函数直接使用该参数。

6,使用类的属性:

在一个类中访问类成员变量有一个特殊的指针:$this通过该指针可能方便的访问类属性或是给类属性赋值。

Class classname

{

Var $myattrib; //定义属性

Function operate($myparam) //为类创建方法

{

$this->myattrib=$myparam; //设置属性值为$myparam

Echo $this->myattrib; //输出属性值

}

}

⑴如果要在类的外部访问一个类的属性,需要确定该属性能否被外部访问。因为在类中定义的属性可以设置外界访问的权限。

以上对属性$myarrtib进行限制,外界可以直接访问:

$newclass =new classname(); //创建一个类classname实例

$newclass->myattrib=”小马”; //给属性赋值

Echo $newclass->myattrib; //输出属性

⑵从类的外部直接访问类的属性不是一个好的方法,面向对象方法的一个优点就是使用类的封装。可以通过使用__get()和__set()函数来实现对该类属性的访问。

Class classname

{

Var $myattrib; //定义属性

Function __get($attribName) //获取属性值的函数

{

Return $this->attribName; //返回该属性的值

}

Function __set($arrtibName,$value) //设置属性值的函数

{

$this->$attribName=$value; //设置属性值

}

}

注:__get函数只有一个参数,该参数用来传递属性的名称,__set函数有两个参数,第一个参数为属性的名称,第二个参数为要设置的属性的值。可以通过这两 个函数来检查和设置任何属性的值。

7,类的访问控制:

Php5 支持的3 种控制符:

⑴public (默认的) public表示该属性和方法在类的内部或外部都可以直接被访问。

⑵private 表示该属性和方法只能在类的内部进行访问。如果没有使用__get()和__set(),则可能对所有的属性都使用这个关键字,也要选择部分方法为私有,但私有的属性和方法不能被继承。

⑶Protected 表示被标记的属性或方法只能在类的内部进行访问,他也存在于任何子类中。 Class classname

{

Public $myattrib;

Public function __get($attribName) //获取属性值的函数

{

Return $this->$attribName;//返回该属性值

}

Public function __set($attribName,$value) //设置属性值的函数

{

This->$attribName=$value;//设置属性值

}

}

8,类方法的调用:

Class classname

{

Var $myAttrib;

Function func_1($param) //函数func_1

{

代码

}

Function func_2($param1$param2)

{

代码

}

Function func_3($param1$param2)

{

代码

Return backvalue;

}

}

调用以上类的3个函数:

$newclass->func_1(“123”);

$newclass->func_2(“123”,”abc”);

$myvalue=$newclass->func_3(“123”,”abc”);//调用func_3并获取返回值。

9,有关类的代码:

$this通过该指针可能方便的访问类属性或是给类属性赋值。 class Employee //创建一个类“Employee”

{

var $empno; // 员工人数 //定义类的属性

var $empnm; // 员工姓名

function add_employee($in_num, $in_name) //创建类的方法为“add_employee”

{

$this->empno = $in_num; //给类的属性赋值

$this->empnm = $in_name;

}

function show() //创建类的方法为“show”

{

echo "$this->empno, $this->empnm"; //输出属性值

return;

}

function changenm($in_name)

{

$this->empnm = $in_name; }

}

$sbabu = new Employee;

$sbabu->add_employee(10,"sbabu"); $sbabu->changenm("babu"); $sbabu->show();

 

第二篇:一周学习总结笔记

周学习笔记

周一

    上午主要将虚拟机进行了搭建,安装必须的软件,配置软件的运行环境。下午主要学习C++的基本知识指针以及类的基本用法,开始着手创建自己的工具函数库,完成快排算法程序函数的填充。由于时间长没有使用C++语言,所以开始运用感觉有一些生疏,所以还是需要补充一下相关的基础知识。

     完成任务:

1.  本地计算机以及虚拟机运行环境的配置

2.  学习C++基本知识,开始着手创建自己的工具函数库

附1:快速排序算法:

1)设置两个变量I、J,排序开始的时候:I=0,J=N-1;

2)以第一个数组元素作为关键数据,赋值给key,即 key=A[0];

3)从J开始向前搜索,即由后开始向前搜索(J=J-1即J--),找到第一个小于key的值A[j],A[j]与A[i]交换;

4)从I开始向后搜索,即由前开始向后搜索(I=I+1即I++),找到第一个大于key的A[i],A[i]与A[j]交换;

5)重复第3、4、5步,直到 I=J; (3,4步是在程序中没找到时候j=j-1,i=i+1,直至找到为止。找到并交换的时候i, j指针位置不变。另外当i=j这过程一定正好是i+或j-完成的最后令循环结束。)

周二

       上午继续学习C++指针的相关应用,因为在mboot的相关开发过程中可能会较多的考虑内存利用率的问题,所以指针的学习至关重要;了解vi编辑器的使用方法,在虚拟机的运行环境下,应该是比较常使用vi编辑器来进行相关的代码修改工作,所以应该有必要熟练的使用vi编辑器。下午主要是根据培训计划中的内容了解MBoot,看《MBoot User Guide》的文档内容,了解基本的mboot编译的相关方式方法,总体感觉有点儿麻烦,不过问了一些师兄,说这部分内容比较简单,因为都是开发好的,改动的东西比较少,从而心里还有点儿底了。

       完成任务:

1.  深入学习C++有关指针的内容

2.  了解使用vi编辑器

3.  了解MBoot的基本内容

周三

       上午主要学习MBoot的发布以及编译运行调试,由于第一次接触这方面的相关东西,而且内容和硬件关系比较密切,所以接受起来有一定得吃力,不过相信真正了解的时候这些问题就不会再存在了,可能开始会累一些,但是学习新知识总归是好的。下午继续学习这方面的内容,中间实在看的头疼转过来看了看C++的类的友元以及操作符的重载,还是没底啊,越看发现不懂的越多,文档里面介绍的东一耙子西一扫帚的,根本不知所谓,明天还得找一些文档恶补啊……。

       完成任务:

1.  学习MBoot发布、编译以及相关运行流程

2.  恶补各种不知道的硬件知识

3.  了解C++的友元和操作符重载

周四

       今天下午主要学习了开机音乐+开机LOGO的启动流程以及其新的设计方案,这一部分内容相对较少也比较好理解,但是要去修改编写还存在很多的不明白的问题。上午的时间主要用来构思我的一个新的想法,以及分析这个想法的可行性,相信下周可以整理出项目方案,存放留待有足够能力时去实现它。

       完成任务:

1.开机音乐+开机LOGO的启动流程

周五

       细细的体会《introduction to MBoot》这本电子书,虽然已经读了四编,但是每一遍读都会有新的认识,而且多读一次就会发现自己不懂的就多一些。例如今天读到“initialize H/W setting”这一段时就想了,这个H/W是个什么东西呢,上网查也没有查到结果。还有就是下图5-1中:

图5-1 SPI Flash Layout

当读到这里时,我又不知道这个PM作何讲了。问过师父之后才知道,这是个类似于系统的东西,可以接受键盘鼠标等的命令方便下面的UBoot的加载控制。

图5-2 文档问题截图

此部分很少用到,且很少修改,所以不必理会,暂且放入黑匣子……

了解到开机图片以及音乐文件条件:

a:最大分辨率支持如下:Baseline: 1600 * 1200;

b.大小不能超过128k;

c:音乐大小不能超过64K;

d:音乐文件必须是mp3格式;

相关推荐