php OOP 中private 与public区别教程

 更新时间:2016年11月25日 15:15  点击:1691

在过去的一页我开始解释了面向对象的重要性和如何创建一个基本对象。在此及以后,我们会敲定许多细节。

类变量和能见度
在班级,我们首先确定我们的变数。在这种情况下,我们的第一个变量是$名称。方便的特点, PHP5 (不PHP4 )是增加能见度的控制。我们$名称变目前的能见度私有化。私人能见度意味着该变量只能可通过内部的方法的类(如setName和getName ) 。如果我们设置变量的可见市民,我们的变量可以访问外部(不包括方法) 。最后的能见度设置一个变量的保护,这意味着变量访问是有限的,家长和继承类,我们将在以后讨论。

在PHP4 ,公众是唯一的选择知名度和公共变量宣布使用无功而不是公众。让我们来看看如何变能见度工程,增加了$位置变量设置为公众能见度:

/* instantiate object */
$kirupa = new User;

/* access private variables via methods, then try without methods */
$kirupa->setName( 'Kirupa' );
echo $kirupa->getName().'<br />'; // Kirupa
echo $kirupa->name.'<br />';  // breaks our code

/* access public variables without methods will work */
$kirupa->location = 'MIT';
echo $kirupa->location.'<br />'; // MIT

class User {
 private $name;  // must be accessed with methods.
    // not available in PHP4
      
 public $location; // can be accessed without methods
    // var $location; in PHP4
 
 function setName( $val ) {
  $this->name = $val;
  return;
 }
 
 function getName() {
  return $this->name;
 }
}

因此,该变量的能见度你应该选择哪一个?答案是,它取决于。一般情况下,您应该利用私人罚款。私营企业是特别有用,因为它支持封装-能够隐藏数据,只有使它可以通过特定接口。在面向对象,一个接口代表的功能给特定的对象。

正如我们设置一个变量的知名度,我们也可以设定知名度的方法。默认情况下,如果我们不成立的知名度我们的方法,他们将被设置为公共。为了时间,我们将不会深入的例子不同的方法知名度。继续了解一个重要和有用的方法,构造。

注意:此为:在方法方面,我们提到级变量和使用其他方法$这一- “ 。这可以看出内setName和getName方法。 $这是一个预设的变量时创建实例,使一个对象引用本身。

请注意有关命名约定:虽然成立[ PropertyName ]和
获得[ PropertyName ]很受欢迎的方法,因为它们的名字很容易理解,他们并不需要。您可以名称这些方法无论你想要的。

构造方法
现在是一个很好的时间来看看构造方法。该构造是一个方法,将自动被运行时对象实例。在PHP5 ,我们的方法称为“魔术方法” (即__construct , __destruct ,和其他一些) ,其中从两个底线。在PHP4 ,构造方法将得到相同的名称的阶级本身。因此,在PHP4 ,如果我们有一类名为用户,我们的构造方法也将被命名用户(不__construct ) 。记住,你不必调用构造方法明确,因为它会自动运行一个实例时,该类别建立。这里有一个构造中的行动:

$kirupa = new User;
echo $kirupa->getJob().'<br />'; // Engineer

class User {
 private $job;
 
 function __construct() { // function User() in PHP4
  $this->job = 'Engineer';
 }
 
 /* job methods */
 function getJob() {
  return $this->job;
 }
}

现在,你可能会开始看到的好处之一对象-许多代码在于背景。我们可以包括文件包含我们的班级隐藏重型代码甚至更多。由于命名约定的类和方法是相当自我解释,我们不会需要不断回顾我们列入档案。继续阅读,了解如何,我们可以用阵列来加快我们的进程。

php数组{array}使用教程

现在,这冗长的设定每个属性使用一套方法-必须有一个更简单的方法。这就是关联数组结合我们构造派上用场。让我们创造我们的用户对象,并给它几个实例时性能

$attribs = array(
  'name'  => 'Kirupa',
  'job'  => 'Engineer',
  'school' => 'MIT',
  'homeTown' => 'Spanish Fort',
  'homeState' => 'Alabama'
  );
$kirupa = new User( $attribs );

echo 'Name: '.$kirupa->getName().'<br />';  // Kirupa
echo 'Job: '.$kirupa->getJob().'<br />';  // Engineer
echo 'School: '.$kirupa->getSchool().'<br />';  // MIT
echo 'Home Town: '.$kirupa->getHomeTown().'<br />'; // Spanish Fort
echo 'Home State: '.$kirupa->getHomeState().'<br />'; // Alabama

class User {
 private $name;
 private $job;
 private $school;
 private $homeTown;
 private $homeState;
 
 function __construct( $attribs ) {
  $this->name  = $attribs['name'];
  $this->job  = $attribs['job'];
  $this->school  = $attribs['school'];
  $this->homeTown  = $attribs['homeTown'];
  $this->homeState = $attribs['homeState'];
 }
 
 /* name methods */
 function setName( $val ) {
  $this->name = $val;
  return;
 }
 
 function getName() {
  return $this->name;
 }
 
 /* job methods */
 function setJob( $val ) {
  $this->job = $val;
  return;
 }
 
 function getJob() {
  return $this->job;
 }
 
 /* school methods */
 function setSchool( $val ) {
  $this->school = $val;
  return;
 }
 
 function getSchool() {
  return $this->school;
 }
 
 /* home town methods */
 function setHomeTown( $val ) {
  $this->homeTown = $val;
 }
 
 function getHomeTown() {
  return $this->homeTown;
 }
 
 /* home state methods */
 function setHomeState( $val ) {
  $this->homeState = $val;
 }
 
 function getHomeState() {
  return $this->homeState;
 }
}

我一直的一套方法,如果我们想要改变的属性,但现在的性能,建立了经由__construct前面。这就是说,我们通过我们的$ attribs数组对象的实例,这反过来又通过$ attribs的自动构造。优势利用关联数组为此目的,我们并不需要明确地规定所有的变量与方法。这是极其方便的时候将与MySQL PHP的数据,我们将尽快支付。但首先,我们需要学习一点方法的互动和对象分组。

法相互作用
在这一点上,我们的方法不互动。让我们添加一个小功能,例如,我们充分状态转换的名字给适当的缩写。

$attribs = array(
  'name'  => 'Kirupa',
  'homeState' => 'Alabama'
  );
$kirupa = new User( $attribs );

echo 'Name: '.$kirupa->getName().'<br />';   // Kirupa
echo 'Home State: '.$kirupa->getHomeState().'<br />';  // Alabama
echo 'State Abbr.: '.$kirupa->getHomeStateAbbr().'<br />'; // AL

class User {
 private $name;
 private $homeState;
 
 function __construct( $attribs ) {
  $this->name  = $attribs['name'];
  $this->homeState = $attribs['homeState'];
 }
 
 /* name methods */
 function setName( $val ) {
  $this->name = $val;
  return;
 }
 
 function getName() {
  return $this->name;
 }
 
 /* home state methods */
 function setHomeState( $val ) {
  $this->homeState = $val;
 }
 
 function getHomeState() {
  return $this->homeState;
 }
 
 function getHomeStateAbbr() {
  $abbr = States::$ABBRS[$this->getHomeState()];
  if( $abbr ) {
   return $abbr;
  }
  else {
   return 'Unknown';
  }
 }
}

class States {
 /* ideally this would be held in a database */
 static $ABBRS = array (
  'Alabama' => 'AL',
  'Michigan' => 'MI',
  'New York' => 'NY'
  );
}

在这个例子中,我们充分利用国家的名字获得相应的缩写。我们这样做是一类使用同一个静态变量。静态变量一般不会改变,可没有办法。这些变数的行为更多的参考和可用于像你的数据库连接设置和其他网站广泛的变数。静态变量通常是命名与所有大写字母。

本教程是介绍了面向对象编程( OOP )用PHP 。经整理本教程,你应该有基本的必要工具,开始航行世界的对象。各地,我们将借鉴的一个例子,而关键术语和细微之用PHP面向对象介绍。此外,一段时间内将用于展示如何把面向对象的PHP与MySQL 。

菜单上有:

创建我们的第一个对象
类变量和能见度
构造方法
使用数组加快编码
法相互作用
面向对象的PHP集成与MySQL
引入继承
分词
现在让我们开始吧!
创建我们的第一个对象
不足为奇的是,面向对象编程是围绕着物体。虽然想法的物体可能是外国给你的编码方面,了解物体的,以及为什么我们使用它们不应采取长。总之,我们的非编程世界是由物体。计算机,鱼,云,人,车都是对象。物体的特性,比如颜色,大小,名称,和速度。对象也可以由其他物体:汽车门;门处理;处理的塑料杠杆;等等。物体到处都是我们身边。出于这个原因,许多程序员找到面向对象编程比较容易理解。

因此,如何物体转化为代码?如果我们建设一个网站的用户,我们将创建一个或多个用户对象。创建对象使用课。课程组相关的变量和函数。变量举行的对象的属性,比如颜色,大小和速度。履行职能的行动一样设置变量值或打开文件。在这个例子中,我们可以创建用户对象与用户类。你可以把用户级为模板的任何用户对象。

创建一个对象是所谓的实例(创建一个实例) 。让我们实例化一个用户对象和代码相应的用户类别:

/* create new object */
$kirupa = new User;

/* class to create objects with */
class User {
}

注:由于本教程的进展,代码将被删除,这样您不要丢失和能专注于手头的任务。随时保持或重新添加代码从以前的例子。

现在,这个用户无法做任何事情,没有任何属性。在班级中,我们使用的方法(又名职能)和变数让我们的物体的功能和性能。让我们重做我们的第一个例子,使我们的用户可以有一个名称:

* create a new object */
$kirupa = new User;

/* call object methods */
$kirupa->setName( 'Kirupa' );
echo $kirupa->getName().'<br />';

class User {
 private $name;
 
 function setName( $val ) {
  $this->name = $val;
  return;
 }
 
 function getName() {
  return $this->name;
 }
}

正如你所看到的,方法是使用功能宣布[ methodName ]格式,这是在PHP的标准。这个简单的例子说明我们如何可以申请名称的对象,然后访问的名称。继续了解我们如何处理变量和方法的课程。
导言
此教程仅仅是一个肮脏的,并解释如何使用包括( )函数,以使你的PHP代码编写的生活变得更轻松。基本上包括( )函数包括档案放在括号内的内论证的主要文件。我用了很多这个当我连接到一个数据库的多个文件。我一直我所有的变数连接在我的包括文件,并要求他们在整个我的主要脚本。一种这样的:

包括档案: include.php
“ ?
/ /这是我的包含文件
$ dbHost = “ localhost ”;
$dbuser = “root” ;
$ dbPass = “ ” ;
$ dbName = “ MyDataBase ” ;
? “

这是该文件,我的名字及其include.php一个,我将放置在我的主要脚本文件。然后,所有您需要做将您的信息,您的档案是一个小的代码行:

主要文件:
“ ? 
include ( “ include.inc ” ) ;
/ /其余的我的代码将在这里...
/ /这里...
/ /这里...
/ /这里...
/ /这里...
? “

现在还有另一种功能与此类似,需要( )之间的唯一区别是,他们需要( )返回一个致命错误,并停止脚本执行。包括: ( )不这样做;脚本继续运行,即使你的文件包含有包括某些类型的错误。我知道这本教程不包括100 %的基地。这只是一个简单的解释。如果您想了解更多的信息,您可以检查出PHP.net或随时要求对论坛在服务器端脚本论坛。
PHP是不是简单的随机输出价值观和简单的文字。您可以无缝集成PHP和HTML和产出表,格式文本,等等。你大概不知道,有什么大不了呢?该交易的是,您可以控制什么是显示在您的网站通过整合PHP和HTML 。最重要的是, PHP的没有自己的一套格式标记供您学习。您使用HTML 。

所以,让我们开始吧。首先,复制并粘贴下面的代码到一个PHP网页:

<html>
<body>
“ ?的PHP
print( “能否真正掘地鼠队冲入代码PHP的? ” ) ;
? “
“ /体重”
“ /的HTML ”
当您预览网页含有上述内容的代码,您应该会看到文字“能否真正掘地鼠队冲入代码PHP的? ”文本格式不在所有。你会看到显示的文字为默认字体设置为您的浏览器。

您不必通过沉闷遭受,但枯燥的文字。您可以格式-内所有的P HP标签领域。比方说,要大胆的文字。添加标记大胆中, <b>和“ < / b ”标记的文字:

“ ?的PHP
print( “ <b>能否真正掘地鼠队冲入代码PHP的? ” / b “ ” ) ;
? “
当您修改的代码,你的PHP标签与您的粗体标签(见上面的代码)和预览网页在您的浏览器,你会发现,文本现在是粗体。很酷, ehh ?现在,让我们尝试增加一个水平线以下的文字。 HTML标记显示一个横向线是<hr>快来。

让我们补充说,我们的标签编号:

“ ?的PHP
print( “ <b>能否真正掘地鼠队冲入代码PHP的? ” / b “ ” ) ;
print( “ <hr>快来” ) ;
? “
现在,测试此代码。您现在应该可以看到您的文字与水平线显示。只要记住,我们使用的是标准的HTML标记使用的print命令。

输出的数据,涉及报价
虽然所有这一切都非常简单,将情况下,您根本无法进行了一系列的HTML标签内的局限print命令。以下是一个例子

比方说,我们希望我们的文字超连结。在HTML做这种伎俩是:

的<a href="http://www.kirupa.com/">能否真正掘地鼠队冲入代码PHP的? “ / 1 ”

现在,我们不能简单地把上面的HTML内的print命令。其原因是因为害怕引号周围的网址。 PHP的曲解引号是指年底print命令。您可能会结束了一个错误。

该解决方案输出引号,是使用下面的两个字符(引号和背部斜线)的位置上引号: “ 。因此,print命令上述HTML代码变为:

“ ?的PHP
print( “的<a href="http://www.kirupa.com/">能否真正掘地鼠队冲入代码PHP的? ” / 1 “ ” ) ;
? “
我要强调的地方是“改为 ”的着色这些字符的粉红色。每当你看到一个报价,只需添加一个在前面的(或替换引号与 “ ) 。我知道我的重复,一次又一次,但是这是一个小细节,你最终可能忘记在热的编码!

  快速综述
审查时间!您可以使用HTML标签在PHP中使用的print标记和正常的,日常的HTML 。
所有你做的是使用完全相同的HTML标记你通常会使用的HTML文件,但不同的是,您将在这些标记之间的print( “和” ) ;当你偏离这一格式是当您的HTML包含引号。

当您遇到的报价,取代您的报价与以下两个特点: “
 
 

例如更多地参与
下面的代码片段就是一个例子PHP和HTML一起使用。但愿它提供了一些深入了解PHP和HTML可以一起使用,以显示一些表格,图形和格式化文本:

“ ?的PHP
print( “ <font size="2" face="Arial"> ” ) ;
print( “ <table style="BORDER-COLLAPSE: collapse" width="350" border="2"> ” ) ;
print( “ <tr> <td width="2%" bgColor="#b7d0e3"> <font size="2"> ” ) ;
print( “ <img src="http://www.kirupa.com/mini_icons/robot_metal.gif">
“ /字型” “ /运输署” “ ) ;
print( “ <td width="98%" bgColor="#eaf1f7"> <font size="2"> <b>快速摘要” / b “ ” ) ;
print( “ ” /字型“ ” /运输署“ ” /文“ <tr> <td widt"100%" colSpan="2"> ” ) ;
print( “ <table borderColor="#111111" cellPadding="15" border="0"> ” ) ;
print( “ <tr> <td width="100%"> ” /字体“ <font size="2" face="Arial">复杂
例如,涉及表格和图片。 “ /字型” “ /运输署” “ ) ;
print( “ ” /文“ ” /表“ ” /运输署“ ” /文“ ” /表“ ” ) ;
? “
上面的例子中不使用任何新的东西,但它还是涉及了大量的backslashing 。
[!--infotagslink--]

相关文章

  • mysql_connect与mysql_pconnect的区别详解

    在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解...2016-11-25
  • Painter绘制红衣喝酒男水粉画效果教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一说绘制红衣喝酒男水粉画效果的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • iPhone6怎么激活?两种苹果iPhone6激活教程图文详解

    iPhone6新机需要激活后才可以正常使用,那么对于小白用户来说,iPhone6如何激活使用呢?针对此问题,本文就为大家分别介绍Wifi无线网络激活以及iPhone6连接电脑激活这两种有效的方法,希望本文能够帮助到大家...2022-09-14
  • Photoshop制作雨中野外孤独行走的一头牛海报教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说下制作雨中野外孤独行走的一头牛海报的教程,各位想知道具体制作方法的使用者们,大家就快来看一看小编给...2016-09-14
  • Painter绘制帅气卡通魔法王子漫画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制帅气卡通魔法王子漫画的具体教程,各位想知道绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
  • Illustrator鼠绘堆雪人的孩童矢量插画教程

    今天小编在这里就来给各位Illustrator的这一款软件的使用者们来说说鼠绘堆雪人的孩童矢量插画的教程,各位想知道具体绘制方法的使用者们,那么各位就快来跟着小编来看看...2016-09-14
  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • 美图秀秀给照片天空加蓝天白云教程一览

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
  • llustrator绘制扁平化风格卡通警察护士空姐肖像教程

    今天小编在这里就来给llustrator的这一款软件的使用者们来说一说绘制扁平化风格卡通警察护士空姐肖像的教程,各位想知道具体绘制步骤的使用者们,那么下面就快来跟着小编...2016-09-14
  • Illustrator绘制一个方形的录音机图标教程

    今天小编在这里就来给Illustrator的这一款软件的使用者们来说一下绘制一个方形的录音机图标的教程,各位想知道具体绘制方法的使用者们,那么下面就来看一下小编给大家分...2016-09-14
  • photoshop简单制作一个搞笑的换脸表情包教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说一说简单制作一个搞笑的换脸表情包的教程,各位想知道具体制作方法的使用者们,那么大家就快来看一看教程吧。...2016-09-14
  • photoshop给手绘画调色变换场景后期教程

    今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说给手绘画调色变换场景的后期教程,各位想知道具体后期处理步骤的使用者们,那么大家就快来跟着小编来看...2016-10-02
  • 美图秀秀让你胸丰满起来处理教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说一下让你胸丰满起来的处理教程,各位想知道具体处理步骤的,那么下面就快来跟着小编一起看一下教程吧。 给...2016-09-14
  • Painter绘制雷神传插画教程

    今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制雷神传插画的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看看绘制方法吧。 ...2016-09-14
  • 美图秀秀制作隔离区聊天背景教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作隔离区聊天背景的教程,各位想知道具体方法的,那么下面就快来跟着小编一起看一看吧。 给各位美图秀...2016-09-14
  • MySQL中的联合索引学习教程

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • MySQL日志分析软件mysqlsla的安装和使用教程

    一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
  • photoshop素材合成古典园林场景制作教程

    今天小编在这里就来给photoshop的这一款软件的使用者们来说说用素材合成古典园林场景教程,各位想知道到底该怎么制作的,那么就快来一起看一下吧。 给各位photoshop...2016-09-14
  • php类的使用实例教程

    php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25