详解php中的成员

本文是关于php的详细知识教程,一起聊聊PHP中的三种成员,大致内容如下:


1、成员属性(类属性),即定义在类中的变量,用于储存类中的数据;

2、成员方法,即定义在类中的函数,提供给对象解决事件;

3、类常量,是在类中定义的常量,使用const关键字定义。


详解php中的成员


详解php中的成员


一、概念


类成员指定义在类中的一系列数据,他们是直接依赖于类的一级成员。类成员包括:成员属性、成员方法、类常量。


●  成员属性(类属性):即定义在类中的变量,用于储存类中的数据


●  成员方法:即定义在类中的函数,提供给对象解决事件。


●  类常量:在类中定义的常量,使用const关键字定义。


属性和方法在访问时需要使用访问限定修饰符修饰。语法如下:


class 类名{
  
        public $成员属性名[=成员属性值]; //成员属性可以只定义而不赋值,放在之后赋值。 
        [public] function 成员方法名(){
                   ... 
                 } 
        const 常量名=值; 
  
}


类的成员属性可以只定义而不赋值,在之后的逻辑操作中根据情况赋值,但是必须有访问限定修饰符修饰,成员方法的访问限定修饰符可以省略,省略后默认就是public,关于限定修饰符会在后面详解。


二、实现步骤


实现类成员的步骤同样需要进行业务逻辑分析,大致的步骤是:


●  声明类结构


●  分析类是否需要储存数据来确定是否定义成员属性或定义多少成员属性


●  分析类是否要进行某些操作来确定是否要定义成员方法。


●  分析是否需要定义常量


●  对象实例化


●  通过对象调用类成员


例:分析新闻投稿的类的简单示例


实现新闻投稿,首先要声明类结构:


class devote{ }


然后分析是否需要存储数据,很明显,投稿新闻肯定要储存数据,首先要储存新闻标题、新闻内容,然后投稿人的信息,包括昵称,邮箱,手机号等等。


这些数据我们通过成员属性储存:


class devote{
        public $nickname="投稿人";
        public $title="新闻标题";
        public $content="投稿内容";
        public $email="邮箱";
        public $phone="手机号"; 
}


然后分析是否需要执行操作,投稿新闻首先要对新闻内容进行过滤,屏蔽不当词语,然后提交到数据库中保存草稿,等待审核。


class devote{
        public $nickname="投稿人";
        public $content="投稿内容";
        public $email="邮箱";
        public $phone="手机号";
        function clear($content){
                 //过滤新闻内容 
        }
        function input(){
         //提交到数据库 
        } 
}


需不需要类常量呢?暂且是不需要的,那接下来就是实例化类,然后通过对象调用成员实现功能了。


$devote=new devote();
//实例化对象 
$devote->nickname="小杜"; 
$devote->title="一件大事"; 
$devote->content="我手机没电了"; 
$devote->email="2811051813@qq.com"; 
$devote->phone="就不告诉你"; 
$devote->clear($devote->content); 
$devote->input(); 
//通过调用成员实现业务
关于类成员的调用,我们使用的是->链接,如上面的例子所示,调用类属性的语法是:
$对象->属性名;


请注意:调用属性名不需要加$符,在调用时,他们是一体的。但是在定义属性时,必须有$符表示定义变量。


调用属性会得到当前属性的值,对其赋值就会改变他的值,如上,如果是直接调用title属性,得到的值是“新闻标题”,如果再对其赋值,此时title的值就是一件大事,如果对属性重新赋值了,在接下来使用该属性获得的值都是后面赋值的内容,因为类属性实际上也就是一个变量。


重新赋值等同于:


$devote->title="一件大事"; 
//等同于: 
public $title="一件大事";


调用类方法:


$对象->方法名(参数)


调用类常量是静态调用,会在后面详解。


可以通过打印对象来直观的展示上面的内容:


class devote{
        public $nickname="投稿人"; 
        public $content="投稿内容"; 
        public $email="邮箱"; 
        public $phone="手机号"; 
        function clear($content){
         //过滤新闻内容 
        } 
        function input(){
         //提交到数据库 
        } 

  
$devote=new devote(); 
var_dump($devote); 
//object(devote)#1 (4) { ["nickname"]=> string(9) "投稿人" ["content"]=> string(12) "投稿内容" ["email"]=> string(6) "邮箱" ["phone"]=> string(9) "手机号" }


自己测试一下,可以看到成员属性的值是默认的,如果通过对象给成员属性重新赋值,然后再打印对象:


$devote->nickname="小杜"; 
$devote->title="一件大事"; 
$devote->content="我手机没电了"; 
$devote->email="2811051813@qq.com"; 
$devote->phone="就不告诉你"; 
$devote->clear($devote->content); 
$devote->input(); 
var_dump($devote);


可以发现类属性的值被改变了。


三、成员操作


上面的例子已经涉及到了成员操作,即访问成员属性和修改成员属性,成元属性基本的操作是增删改查,查和改上面已经演示过,请看增加属性的操作:


增加成员属性直接在对象后调用一个不存在的成员属性并赋值即可:


$devote->id=1; 
/*
 打印结果: object(devote)#1 (6) { ["nickname"]=> string(6) "小杜" ["content"]=> string(18) "我手机没电了" ["email"]=> string(17) "2811051813@qq.com" ["phone"]=> string(15) "就不告诉你" ["title"]=> string(12) "一件大事" ["id"]=> int(1) } 
*/


执行上面的操作后会在类中新增一个属性id,并赋值为1,这个值在之后也可以通过对象直接访问:


echo $devote->id; //输出1


直接调用一个不存在的属性也不会报错,但是他的值是NULL。


var_dump($devote->ids); //NULL


删除类属性使用unset方法:


unset($devote->id); 
var_dump($devote->id); 
//NULL


通过对象操作的类属性只在当前对象下生效:


$devote->age=18; 
$dv=new devote(); 
var_dump($dv); 
//object(devote)#2 (4) { ["nickname"]=> string(9) "投稿人" ["content"]=> string(12) "投稿内容" ["email"]=> string(6) "邮箱" ["phone"]=> string(9) "手机号" }


方法操作只有调用一种操作,即只可以通过对象调用类的成员方法:


$devote->input();


注意:类成员在类中可以无限定义,但是类中只能包含类属性、类方法、类常量,其他的语法都不可以写在类中。


class Test{
        echo 1234; 
        var_dump("错误"); 
        if($a==1){ echo "True"; } 

//syntax error, unexpected 'echo' (T_ECHO), expecting function (T_FUNCTION) or const (T_CONST)


关于php中的成员之解析就到这里,翼速应用平台内有更多相关资讯,欢迎查阅!


我来说两句

0 条评论

推荐阅读

  • 响应式布局CSS媒体查询设备像素比介绍

    构建响应式网站布局最常见的是流体网格,灵活调整大小的站点布局技术,确保用户在使用的幕上获得完整的体验。响应式设计如何展示富媒体图像,可以通过以下几种方法。

    admin
  • 提升网站的性能快速加载的实用技巧

    网站速度很重要,快速加载的网站会带来更好的用户体验、更高的转化率、更多的参与度,而且在搜索引擎排名中也扮演重要角色,做SEO,网站硬件是起跑线,如果输在了起跑线,又怎么跟同行竞争。有许多方法可提升网站的性能,有一些技巧可以避免踩坑。

    admin
  • 织梦CMS TAG页找不到标签和实现彩色标签解决方法

    织梦cms是我们常见的网站程序系统的一款,在TAG标签中常常遇到的问题也很多。当我们点击 tags.php 页的某个标签的时候,有时会提示:“系统无此标签,可 能已经移除!” 但是我们检查程序后台,以及前台显示页面。这个标签确实存在,如果解决这个问题那?

    admin
  • HTML关于fieldset标签主要的作用

    在前端开发html页面中常用的标签很多,今天为大家带来的是关于HTML中fieldset标签主要的作用说明,根据技术分析HTML

    admin

精选专题