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格式;
其实我也是一样很新的新手,上PHP100学习视频并在论坛里学习其实也就是一个月前的事.虽然早在8月份花过一个星期看完w3schoo…
调试插入时考虑清楚字段类型避免插入后出现缺值乱码屏蔽错误ordie条件显示以前学习php类的总结1php中不能重载但是能用子类覆盖…
GETstring的介绍Isset和empty的介绍数据库数据类型1GETstring的介绍2GETstring他和POST的区别…
php学习心得适合php初学者来源发布时间20xx0918发布人浏览30人次字体大中小1页面之间无法传递变量getpostsess…
php字符串反引号里面的字符必须是命令如pwd是查看当前目录转移字符符号含义双引号反斜线n换行t跳位Tab常量和变量FILE这个默…
四川商会php技能培训中心学习总结(一)在四川商会培训php学习到今天也是快一个月时间了,然而到今天为止第一个php写的网站已经快…
四川商会php技能培训中心学习总结(二)问题5:NTFS权限问题。这个问题ASP上也出现过,不过换在PHP环境就没多一份心往这方面…
其实我也是一样很新的新手,上PHP100学习视频并在论坛里学习其实也就是一个月前的事.虽然早在8月份花过一个星期看完w3schoo…
20xx个人工作总结(苏江)时间一晃而过,转眼间到公司已经1月多了。这是我人生中弥足珍贵的一段经历。在这段时间里同事及领导们在工作…
Php学习心得一、单引号和双引号PHP变量的运行机制是,将变量标识符$后的字符串,或表达式运算结果的字符串作为变量名,去变量池获取…
业务理论学习总结教育教学理论是教育教学工作的先导,作为新时期的教师,一个重要的标志,就是要有丰富的教育教学理论知识。如果没有一定的…