以我的观点来说说PHP中的Class,用于表达的语言都是非正式的语言,也不能确定是否正确。

建立一个类很简单。


类到底干什么呢?很多人都说是什么黑匣子,我在这里称它为一个独立的整体。我们只知道类名,而不知道里面有什么东西。那么,该如何使用这个类呢?
首先:要知道它里面是否定义了公共的变量--专业术语上称它为“属性”。
其次:要知道它里面定义了什么函数--专业术语中称它为“方法”。
我都被这些专业术语搞糊涂了,所以干脆不理它了。

类中的如何定义公共变量,它有什么作用呢?

很简单,我们来扩充 my_class 类

看上面很简单,我们定义了一个公共的变量,只是用 var 空格 普通变量名 构成。它有什么用呢?考虑一下函数中,如果我们要访问函数外的变量,是不是要先 global 一下呢?这个想实现的效果也是如此,它是想让这个类中的所有函数都能访问它,而它区别于函数的一个地方,是类的外部也可以访问这个变量,我随后再讲外部如何访问它。还有一个区别,不能用复杂的语句给这个变量赋值(具体的等理解了类以后自己去看规则)。给它一个默认值

OK,定义了一个公共的变量了,接下来定义一个函数(也就是所谓的“方法”)。
要实现的效果 
} 
} 
?>

这个定义函数跟普通的定义函数形式上没什么区别了。简单就好,定义一个打印 $username 的函数:

到这里可能某些人开始迷糊了,呵呵,最关键的就是这里了,看清楚了。现在有三个 $username 了。到底哪个是哪个啊~~
函数所带的行参,不用解释了吧?这个函数功能就是打印行参所接收的值,也就是如果:

那么它将打印 “猪头深空” ,就这么简单。
怎么样访问这个函数?肯定不是我上面说的那样直接 show_username(”猪头深空”); 了,别急,类有类的一套。如下:

这样就初始化上面的那个 my_class 的类了,并把这个对象赋给变量 $Name ,你可以这样理解,这个变量就代表整个类了,呵呵。
使用类中的函数:
show_username("猪头深空"); 
?>

晕了,为什么这么复杂?还要箭头?其实很形象的。本来已经把类给了变量 $Name 了是吧?也就是 $Name 代表了这个类,然后用一个箭头指向类中的 show_username 这个函数。就是这么简单,也就是说,这个函数是这个类中的,而不是其他的函数--你就理解为表示一个区别吧,呵呵。
试试看哦,打印出 “猪头深空” 这四个字了。你说为什么要这么复杂?用函数不是也能实现么?我说,这么简单的你当然看不出好处了,我们继续扩充。
还有一个疑问:刚才说的“公共的变量”怎么一点用处都没有呢?为什么这个函数不会自动接收这个公共变量 var $username 中的默认值?也就是如果我使用:
show_username($username); 
?>

会有什么结果呢?答案是没有任何输出。因为你没有给形参 $username 一个值。那么该怎么使用这个公共的变量?
我们来修改一下这个类:
username; 
} 
} 
?>

哇靠,不是吧,这回脸形参都没有了?还多了一个$this->,晕了不是,呵呵。其实这也是类的一个最大的方便之处。
$this 的作用:访问一个公共的变量,或者类里面的函数。
访问?这么专业?其实就是用 $this->username 来代替 var $username 而已拉,$this 用来说明它是公共的。可以访问的,函数外部的东西。
试试看:
show_username(); 
?>

看到了吧,终于打印 “深空” 这两个字了,娃哈哈。
我不打印“深空”这两个字,我要打印“猪头深空”,怎么办?很简单,我们给这个公共变量重新赋值拉。服了你了。
username="猪头深空"; 
?>

这个能明白意思么?$Name->username 表示的是类里面的这个公共变量。等号赋值不用我解释了。
我们再来打印看看
show_username(); 
?>

哈哈,终于打印“猪头深空”了。不错吧,很方便吧,不用形参也能任意修改打印值哦~~。
不过单单打印一个名称也太没意思了,我们说点欢迎的话吧,来扩充一下这个类,创建一个名叫 Welcome 的函数:
username; 
} 
function Welcome() 
{ 
} 
} 
?>

恩,实现什么功能好呢?简单点吧,就实现在名字前面有 “欢迎” 两个字好了
username; 
} 
function Welcome() 
{ 
echo "欢迎"; 
$this->show_username(); 
} 
} 
?>

第二次看到 $this 了吧?$this->show_username(); 干什么用呢?其实它就是调用 show_username 这个函数,用 $this 来表示这个函数在类中并且和 Welcome 函数平行,而不是在其他地方(比如Welcome函数中)。
Welcome 函数实现的功能很简单,首先打印两个字”欢迎”,然后接下去执行 show_username 函数,打印名字。
来试试这个函数吧:
Welcome(); 
?>

看到了吧,打印出“欢迎深空”这四个字了。
可是我要打印“欢迎猪头深空”,怎么办?我服了你了,我们给公共变量 var $username 一个值吧:
username="猪头深空"; 
?>

接下去打印欢迎语:
Welcome(); 
?>

嘿嘿,终于打印“欢迎猪头深空”了。
怎么样?明白了类的用法了么?好处在于能够调用类中的任意函数,只要用 $this 指出来,可以改变一个公共变量的值,可以在类中的函数中使用这个公共变量。………多了去了,它的应用等待你去发现了。
下面是一篇很早的文章了,建议大家也可以看看。
12下一页阅读全文

PHP类(Class)入门教程第1/2页的更多相关文章

  1. PHP类(Class)入门教程第1/2页

    对类的摸索~~俺用了半年时间才大概理解类的作用和实现。主要是没有一篇能让我理解的文章(之前没接触过任何OO的东西)。

  2. php类自动加载失败的处理方案及实例代码

    在本篇文章里小编给大家整理了一篇关于php类自动加载失败的处理方案及实例代码,有兴趣的朋友们可以学习参考下。

  3. 实例化php类时传参的方法分析

    这篇文章主要介绍了实例化php类时传参的方法,结合实例形式分析了实例化php类时传参的相关原理、实现方法与操作注意事项,需要的朋友可以参考下

  4. 带有变量的PHP模板类?

    谢谢.您当前的策略将起作用,并且非常简单.str_replace()是高效和干净的,您可以简单地循环它以用您的变量内容替换精确的标记匹配.但是,缺点是您必须首先将所有模板加载到字符串中,这可能效率很低.另一种非常相似的方法是,您只需使用extract().Extract将采用一组键/值对,并在本地范围内创建变量.如果在同一范围内包含()模板,那么您的变量就可以运行了.像这样的东西:您的模板可能只是普通的PHP.那么你所要做的就是:

  5. 如何连接常量和变量并使用PHP将其存储在类常量中?

    两个状态consts工作正常,可以在类方法中访问self::STATUS_ERROR和self::STATUS_OK就好了.问题是当我尝试定义第三个常量时如何停止抛出以下错误.解析错误:语法错误,意外’.’,期待’,’或’;’在/home/sub/sub/directory/script.PHP中你没有.常数是不变的.你不能存储任何东西.您可以使用静态属性.您无法在声明中执行此操作,因此您可能更喜

  6. 在PHP中卸载动态类

    我通过以下方式实现了动态加载插件:每个插件定义一个名为PlginImpl的类,它可以正常工作.但是应该可以在process()的返回值内调用指定的其他插件.这会调用上面指定的相同方法,但失败的是:请注意,每个插件都是一个类,即:Plugin提供了一些有用的功能,而PluginInterface定义了ie().我假设所有插件都名为PlginImpl的事实导致问题,因此我的问题是:有没有办法在用require_once加载它后卸载一个类?

  7. 如何在php中调用父类方法

    何时在适当的编码环境中使用范围解析运算符.将printItem定义为静态方法,您可以使用Foo::printItem;或者用子方法调用它:

  8. php – Laravel扩展Form类

    我正在尝试扩展L4.1中的Form类,但我似乎错过了一些东西.我的文件基于API命名为FormBuilder.PHP,保存在app/libraries/extended/FormBuilder.PHP中.这实际上是我第一次尝试在Laravel中扩展核心类.我似乎无法指出如何正确扩展像这个Form类的核心类.编辑:我将“app/libraries/extended”添加到我的composer.jso

  9. php – 获取特定类的所有对象

    我必须通过引用列出作为类实例的对象我需要一个解决方案来获取所有Foo类实例的对象你知道怎么做吗?获取类的所有实例的解决方案是在创建实例化类时保留它们的记录:现在全局可访问的数组Foo::$instances将包含该类的所有实例.你的问题有点宽泛,所以我不能确切地说这是你正在寻找的.如果没有,它有望帮助你更清楚地了解你正在寻找什么.

  10. PHP FTP / SFTP交换机类

    使用课程:我在使用easyPHP连接我的win7机器上的PHPseclib时遇到了一些麻烦,并开始了Q..如果有人有任何想法我会非常感激…事实上,你现在看起来实际上有三种策略,ftp,sftp&SSH.你想要做的是将代码设置为水平扩展而不是垂直扩展,这样做的方法是通过Strategydesignpattern.基本上你正在做的是在代码中拉出公共接口,然后为FTP和&创建单独的实现.SFTP.有很多不同的方法可以对此进行实际实施,因此请调整您心中的内容!

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部