`

PHP基础之面向对象的一些概念

    博客分类:
  • PHP
PHP 
阅读更多

写PHP也已经有一段时间了,回忆之前写Java的一段经历,现归纳一些基本的概念

 

1.static关键字:

  static关键字的目的是使方法或者属性名独立于类的实例,也就是说和类是同一级别的,与对象或者类本身关联。

  static修饰的方法或者属性是可以通过类名直接访问的,当然,也是可以初始化对象,通过实例来访问。

  所以static修饰的方法或者属性也叫全局变量或者方法

 

2.this关键字:

  this关键字是与对象或者类的某个实例关联的

  **不能在static方法中使用this关键字

 

3.self关键字:

  self关键字是指向对象或者类本身,不指向任何已经实例化的对象

  一般用来指向对象或者类中俄静态变量

 

4.parent关键字:
  parent关键字即指向父类的指针

  一般用来调用父类的构造方法

<?php
  class Test{
    private $name = '';
    private static $age = 20;
    public function __construct(){
      $this->name = 'test';
    }
    
    public function setName($name){
      $this->name = $name;
      echo $this->name;
    }

    public static function setAge($age){
      self::$age = $age;
      echo self::$age;
      //$this->age = $age;                 //error Using $this not in object context
    }
    
  }
  
  $test = new Test();
  $test->setName('KingJ');                 //KingJ
  echo '</br>';
  $test->setAge(99);                         //99

 

5.继承的调用

 

<?php
  class A{
    public function a(){
      echo 'A:a';
    }
  }

  class B extends A{
    public function bb(){
      $this->a();    
    }
  }


  $test = new B();     //此刻初始化子类B的时候,由于之类没有构造方法,就调用父类的构造方法a(),此时输出A:a
  $test->bb();          //在之类中可以用$this->function来调用父类的方法

 

6.PHP中的引用

php的引用就是在变量或者函数、对象等前面加上&符号

首先我们来看一个例子:

<?php
$a = 100; //声明变量a
$b = &$a; //声明变量b,引用自变量a
echo "$a <br />";  
echo "$b <br />";
$a++; //变量a自增1
echo "$a <br />";
echo "$b <br />";//查看变量b,也增加了1,说明使用的是同一存储单元

 结果:

100 
100 
101 
101

 php中对于地址的指向功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发 生写操作,指向同一个地址的变量或者对象是不会被拷贝的。

php默认为传值传递:

 
<?php    
$a = 20;
$b = $a;
$a = $a + 10; 
echo $a.' and '.$b; 

 结果:

30 and 20

 要是想变为地址传递需要加&,既:

  
<?php
$a = 20;
$b = &$a; 
$a = $a + 10; 
echo $a.' and '.$b; 

 结果:

30 and 30
 

也就是说,&把$a的地址传给了$b,这样的话这两个变量现在共享一个内存的存储区域,就是说它们的值是一样的。

同样的语法可以用在函数中,它返回引用,以及用在 new 运算符中:

<?php
$bar =& new fooclass();
$foo =& find_var($bar)

 引用做的第二件事是用引用传递变量。这是通过在函数内建立一个本地变量,并且该变量在呼叫范围内引用了同一个内容来实现的。说的通俗点就是一个函数的参数是一个本地变量的引用。下面再举例说明一下:

<?php
function foo(&$val1, $val2) {
	$val1 += 1;
	$val2 += 1;
}
$a=5;
$b=10;
foo($a,$b);
echo $a;
echo $b;
 

运行这段代码是给函数传递两个参数,一个是引用$a的内容,一个是$b的值,在执行此函数后,发现$a的内容改变了,而$b的内容则没有变化。

 

PHP引用的第三个用法是引用返回,这个用法理解起来有点难度,引用返回用在当你想用函数找到引用应该被绑定在哪一个变量上面时。当返回引 用时,使用此语法:说的简单点,就还是引用函数的返回。但和参数传递不同,必须在函数定义和函数引用这两个地方都用 & 符号。下面举个例子:

<?php
function &find_var ($param)
{
    /* ...code... */
    return $found_var;
}
$foo =& find_var ($bar);
$foo->x = 2;
 

这个例子给$foo 赋值是函数find_var的返回引用,所以在给$foo->x赋值时就是给find_var的返回引用赋值,而不是简单的赋值。

PHP引用的最后一个用法是引用定位,主要有两个应用:一个是global 引用,当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是和$var =& $GLOBALS["var"];是一样的。另外一个是$this的用法,在一个对象的方法中,$this 永远是调用它的对象的引用。

 

7.php中的global

 

global $var1,$var2;
就是外部变量的同名引用,变量本身的作用范围仍然在函数体内。改变这些变量的值,外部的同名变量自然也改变。但是一旦用了&,那么变量将不再是同名引用。

$var1=1;
$var2=2;
function test()
{
    global $var1,$var2;//作用范围就在函数体内
    $var1=3;
}
test();
echo $var1;

 结果一定是3。因为是同名引用嘛。

 

$var1=1;
$var2=2;
function test()
{
    global $var1,$var2;//作用范围就在函数体内
    $var1=&$var2;
}
test();
echo $var1;

 结果一定是1。因为在函数内的$var1经过赋值后与$var2具有相同的引用了。

 

$var1=1;
$var2=2;
function test_global()
{
	global $var1,$var2;
	$var1=&$var2;
	$var1=7;
}
test_global();
echo $var1;
echo  $var2;

 结果一定是1和7。因为在函数内的$var1与$var2具有相同的引用。因此改变$var1的值,$var2的值也作了改变。

 

 

 

 next to do ------------------------------------------

分享到:
评论

相关推荐

    PHP的面向对象编程

    本节我们将要介绍如何在PHP中进行面向对象编程(OOP,Object Oriented Programming),并说明如何通过使用一些OOP的概念和PHP的技巧来减少编码和提高质量。在应用PHP类前,请你查阅相关的面向对象编程书籍,了解面向...

    深入PHP面向对象、模式与实践 (第2版)》 part2

     本书适合每位php程序员进阶参考,帮助他们掌握php面向对象设计和开发的精髓,跻身高端php程序员之列。 目录 第一部分 介绍  第1章 PHP:设计与管理  第二部分 对象  第2章 PHP与对象   第3章 对象基础...

    php面向对象基础详解【星际争霸游戏案例】

    主要介绍了php面向对象基础,结合星际争霸游戏案例详细分析了PHP面向对象类、继承、重载、接口等相关概念与使用技巧,需要的朋友可以参考下

    php面向对象全攻略 (一) 面向对象基础知识

    1.面向对象的概念 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构,OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP 达到了软件...

    PHP面向对象学习笔记之一 基础概念

    PHP面向对象学习笔记之一 基础概念,想要学习PHP面向对象编程的朋友可以参考下

    深入PHP面向对象、模式与实践 (第2版) part1

     本书适合每位php程序员进阶参考,帮助他们掌握php面向对象设计和开发的精髓,跻身高端php程序员之列。 目录 第一部分 介绍  第1章 PHP:设计与管理  第二部分 对象  第2章 PHP与对象   第3章 对象基础...

    面向对象编程基础.docx

    主要讲述了类与对象的基础,通过对类的属性和行为进行理解。讲述了构造方法,成员方法,以及局部变量的概念。

    php面向对象(一) 初窥(php面向对象基础介绍)

    初窥php面向对象 1.类:类就是属性和方法的集合 是一个抽象的概念比如生活中的“人”,”汽车” 2.对象:对象是具体的事物 比如一叫“小强”的人 一辆叫“奥迪a7”的汽车 3.类和对象的关系:类是抽象的出来的某种事物的...

    Python面向对象教程配详细案例.md

    Python是一种简单、易学、功能强大的编程语言,具有广泛的应用领域。它支持面向对象编程,允许开发人员使用类和对象创建复杂的程序。...通过学习这些概念,您可以开始创建自己的类,并在Python中实现面向对象编程。

    PHP学习记录之面向对象(Object-oriented programming,OOP)基础【类、对象、继承等】

    主要介绍了PHP学习记录之面向对象(Object-oriented programming,OOP)基础,结合实例形式分析了PHP类、对象、继承等相关概念、原理、使用技巧及操作注意事项,需要的朋友可以参考下

    matlab购物车代码-ObjectOrientedProgrammingBasics:面向对象的编程基础〜OOP的开始

    matlab购物车代码面向对象编程基础 面向对象的编程基础〜OOP的开始 面向对象编程的概念 面向对象编程(OOP)是一种基于“对象”概念的编程范例,它可以包含字段(通常称为属性)形式的数据和过程(通常称为方法)...

    PHP学习记录之面向对象(Object-oriented programming,OOP)基础【接口、抽象类、静态方法等】

    主要介绍了PHP学习记录之面向对象(Object-oriented programming,OOP)基础,结合实例形式分析了PHP面向对象程序设计中接口、抽象类、静态方法等相关概念、原理、用法与操作注意事项,需要的朋友可以参考下

    PHP实战:对象,设计,敏捷(PHP in Action :Objects, Design, Agility )

    6 面向对象原理 (Object-oriented principles) 7 设计模式 (Design patterns) 8 怎样设计的问题:日期和时间处理 (Design how-to: date and time handling) Part 2: 测试和重构 (Testing and refactoring) 9 测试...

    php-oop-fundamentals, 这个库伴随着Tuts+课程 PHP OOP基础.zip

    php-oop-fundamentals, 这个库伴随着Tuts+课程 PHP OOP基础 php-oop-fundamentals这个库伴随着Tuts+课程 PHP OOP基础什么是 OOP?... 这看起来可以能很多,但是你将看到了一些核心概念后面的面向对象的概念。类 v

    PHP实战 (中文版)

    全书分为四部分介绍php相关开发内容,第一部分是工具和概念,介绍了php面向对象编程细节以及面向对象设计方法。还介绍了敏捷开发。第二部分讲述了测试和重构,php实战从实战的角度对当前流行的测试驱动开发以及代码...

    《PHPWeb程序设计教程与实验》习题答案[文].pdf

    PHP基础知识 在学习PHP Web程序设计之前,需要了解PHP的基本概念和语法。PHP是一种开源的服务器端脚本语言,主要用于Web开发。PHP代码可以嵌入到HTML文档中,使用PHP脚本来处理服务器端的逻辑。 PHP变量和数据类型...

    PHP面向对象五大原则之依赖倒置原则(DIP)详解

    本文实例讲述了PHP面向对象五大原则之依赖倒置原则(DIP)。分享给大家供大家参考,具体如下: 什么是依赖倒置呢?简单地讲就是将依赖关系倒置为依赖接口,具体概念如下: 1.上层模块不应该依赖于下层模块,它们共同...

    PHP7从入门到精通.zip

    分别介绍了PHP 7的基本概念、PHP服务器环境配置、PHP的基本语法、PHP的语言结构、字符串和正则表达式、数组、时间和日期、面向对象编程、错误处理和异常处理、PHP与Web页面交互、文件与目录操作、图形图像处理、...

    Beginning PHP and MySQL 3rdEdition

    本书是专门讨论PHP的基础性的特点,特别注重对这些新的PHP 5中,包括改进的面向对象的支持,例外处理, sqlite的支持, simplexml ,以及更多。但是PHP 5的具体议题,只有一部分是什么的涵盖;您也将进一步了解有关...

Global site tag (gtag.js) - Google Analytics