php 引用与继承教程

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

为了使这个系统更强大,我们不希望所有用户在我们组具有相同的地位。有些用户需要管理员,其他主持人,和其他普通用户只。我们怎么能考虑到这一点在我们的物体?答案是继承-的能力一类的继承方法和属性从另一个类别。首先,让我们来看看继承代码:

/* Kirupa has admin powers */
$kirupa = new Admin( array( 'name' => 'Kirupa' ) );
echo $kirupa->getName().'<br />'; // Kirupa
echo $kirupa->getAdmin();  // Administrator

/* Regular does not have admin powers */
$regular = new User( array( 'name' => 'Regular' ) );
$regular->getAdmin();   // breaks our code


/* Normal User class */
class User {
 private $name;
 
 function __construct( $attribs ) {
  $this->name = $attribs['name'];
 }
 
 function getName() {
  return $this->name;
 }
}

/* Admin is a User, but with additional functionality */
class Admin extends User {
 function getAdmin() {
  return 'Administrator';
 }
}

正如你可以看到,我们的管理对象继承了功能的用户级使用关键字扩展。最重要的是,我们的管理是提供了一些额外的功能。在这种情况下,我们的用户级被称为超。在PHP中,一类只可继承父之一。还有更多细微的继承,但本教程将只支付基本知识。在一个更现实的情况下,我们将更多的功能代码仅管理员。也许就像:

/* Additional functionality for just Administrators */
class Admin extends User {
 function banUser( $id ) {
  /* code to ban user */
 }
 
 function unbanUser( $id ) {
  /* code to unban or activate user account */
 }
 
 //...
}

为了时间和重点,这些方法并没有真正得到编码。但是,这应该给你一些深入了解如何继承的作品,为什么它可以是有益的。

继续在少数离别的话和方向。

分词
到现在为止,你应该了解对象,如何创建它们,以及如何进入其属性和方法。此教程绝非无所不包。事实上,这仅仅是冰山的一角,目的是这样。为进一步读,我建议PHP5 :对象,模式,与实践的马特Zandstra 。此外,你可以阅读对象提供的文件上php.net 。

正如你开始了解更多的面向对象和你的PHP代码变得更加面向对象,你会发现更多的代码重用,并最终节省时间和能源。预现有的代码资源,如梨和PHPClasses.org将变得越来越有用。

PHP的安装

什么你需要?
本教程将不会解释如何安装PHP , MySQL的,或Apache服务器。

如果您的服务器支持PHP的-你不需要做任何事情!您不需要编译任何东西或安装任何额外的工具-刚刚创造一些。 P HP文件在您的网页目录-和服务器将解析为您。大部分网站提供主机PHP的支持。

然而,如果您的服务器不支持PHP的,你必须安装PHP 。以下是一个链接到一个很好的教程从PHP.net如何安装PHP5 :

http://www.php.net/manual/en/install.php

下载的PHP
下载PHP的免费浏览: http://www.php.net/downloads.php

下载MySQL数据库
下载MySQL的免费浏览: http://www.mysql.com/downloads/index.html

下载Apache服务器
下载Apache的免费浏览: http://httpd.apache.org/download.cgi

您无法查看PHP源代码选择“查看源文件”在浏览器-你只会看到的输出P HP文件,这是纯H TML。这是因为脚本的执行服务器上的结果之前,发送回浏览器。


-------------------------------------------------- ------------------------------

基本的PHP语法
阿PHP脚本块总是始于“ ? php和目的吗? ” 。阿PHP脚本块也可以放在任何地方的文件。

服务器上速记的支持,您可以启用启动脚本块“ ?和结束吗? “ 。

然而,最大的兼容性,我们建议您使用标准格式“ ( < ? PHP )的,而不是速记形式。

“ ? PHP的? ”

的PHP文件通常包含HTML标记,就像HTML文件,还有一些PHP脚本代码。

下面,我们有一个例子,一个简单的PHP脚本发送的文字的“ Hello World ”浏览器:

<html>
<body> “ ?的PHP
回声“世界您好” ;
? “ ” /体重“
“ /的HTML ”

每一行代码在PHP必须以一个分号。分号是一个分离器,是用来区分的指令集从另一个。

有两个基本报表输出的文字用PHP :回声和打印。在上面的例子中,我们使用了回声声明,输出的文字“世界您好” 。

注:该文件必须有。 PHP扩展。在档案。 html副档名, PHP代码将不会执行。


-------------------------------------------------- ------------------------------

评论在PHP
在PHP中,我们使用/ /进行单线的意见或/ *和* /使大量评论区块。

<html>
<body>
<?php
//This is a comment
/*
This is
a comment
block
*/
?>
</body>
</html>
变量是用于存储价值观,如数字,字符串或函数的结果,使它们可用于许多倍的脚本。


-------------------------------------------------- ------------------------------

在PHP中的变量
变量用于存储值,如文本字符串,数字或阵列。

当一个变数是一套可用于一遍又一遍在您的脚本

所有的变量在PHP开始为标志的象征。

正确的方法设置一个变量在PHP :

$ var_name =价值;

新的PHP程序员常常忘记为标志开始的变数。在这种情况下,将无法工作。

让我们尝试建立一个变量与一个字符串,和一个变量与一些:

“ ?的PHP
$文本= “世界您好! ” ;
$数量= 16 ;
? “


-------------------------------------------------- ------------------------------

PHP是一个松散型语言
在PHP中的变量并不需要宣布成立之前。

在上面的例子中,你看,你不必告诉PHP的数据类型的变量。

PHP的自动转换的变量,以正确的数据类型,这取决于它们是如何确定。

在一个强类型的编程语言,你要申报(界定)的类型和名称的变量在使用它。

在PHP中的变量是申报时会自动使用它。


-------------------------------------------------- ------------------------------

变量命名规则
一个变量名称必须以字母开头或下划线“ _ ”
一个变量的名字只能包含字母数字字符和下划线(亚利桑那州, 0-9 ,和_ )
一个变量的名称不应包含空格。如果一个变量的名字是多一个字,应该强调分离( $ my_string ) ,或与资本( $ myString )

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'
  );
}

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

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

类变量和能见度
在班级,我们首先确定我们的变数。在这种情况下,我们的第一个变量是$名称。方便的特点, 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;
 }
}

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

本教程是介绍了面向对象编程( 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的标准。这个简单的例子说明我们如何可以申请名称的对象,然后访问的名称。继续了解我们如何处理变量和方法的课程。
[!--infotagslink--]

相关文章

  • 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
  • 美图秀秀给照片天空加蓝天白云教程一览

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • 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
  • MySQL中的联合索引学习教程

    联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
  • 美图秀秀制作隔离区聊天背景教程

    今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作隔离区聊天背景的教程,各位想知道具体方法的,那么下面就快来跟着小编一起看一看吧。 给各位美图秀...2016-09-14
  • 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
  • Lua语言新手简单入门教程

    这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
  • 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
  • PHP扩展开发教程(总结)

    PHP是一种解释型的语言,对于用户而言,我们精心的控制内存意味着easier prototyping和更少的崩溃!当我们深入到内核之后,所有的安全防线都已经被越过,最终还是要依赖于真正有责任心的软件工程师来保证系统的稳定运行。1、线...2015-11-08