`

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面向对象手册知识点解析 #### 一、面向对象编程简介 面向对象编程(Object-Oriented Programming,简称 OOP)是一种程序设计范式,它将数据和处理数据的方法捆绑在一起形成“对象”。OOP 的核心思想是通过...

    深入PHP面向对象模式与实践第2版

    《深入PHP面向对象模式与实践第2版》是一本专注于PHP面向对象编程的书籍,它不仅涉及到面向对象编程的基础知识,还深入讲解了面向对象设计模式以及如何在实际项目中应用这些模式。该书是对PHP开发者掌握面向对象技术...

    PHP5面向对象开发教程第一章-PHP5面向对象基础

    本教程将探讨PHP5中的面向对象基础,为后续的深入学习打下坚实的基础。 首先,我们需要理解面向对象编程的核心概念:类(Class)和对象(Object)。类是定义数据类型的一种模板,包含了属性(Variables)和方法...

    面向对象编程基础知识

    以下是在 PHP 中实现面向对象编程的一些关键点: 1. **类的定义**: ```php class MyClass { public $myVariable; function __construct() { $this-&gt;myVariable = "Hello World!"; } function display()...

    实验PHP面向对象

    在进行PHP面向对象实验的过程中,首先需要掌握的核心概念是面向对象设计思想,这是理解面向对象编程(OOP)的基础。面向对象思想主要涉及对象、类、继承、封装和多态等概念,是通过类来实现的。类可以被看作是创建...

    深入PHP面向对象、模式与实践_第3版_高清PDF(附完整源码)

    本书首先从基础出发,详细介绍了PHP面向对象编程的基础概念,包括类、对象、封装、继承和多态等核心概念。通过深入理解这些概念,开发者可以构建更加模块化、易于维护的代码结构。 书中深入探讨了各种设计模式,这...

    php面向对象初步入门教程pdf版

    总之,本教程将引导你逐步了解PHP面向对象编程的基础,同时涵盖与MySQL数据库的交互,为你的Web开发之旅打下坚实的基础。阅读《php面向对象初步入门教程pdf版》将帮助你快速掌握这些关键概念,并在实践中应用它们。

    深入PHP:面向对象、模式与实践(第三版)高清PDF和完整源码.zip

    总的来说,《深入PHP:面向对象、模式与实践》第三版是一本全面而深入的教程,适合有一定PHP基础并希望深入学习面向对象编程和设计模式的开发者。通过阅读这本书,不仅可以掌握理论知识,还可以通过提供的完整源码...

    php简单面向对象的网站例子

    面向对象编程(Object-Oriented Programming,简称OOP)是PHP中的一个重要概念,它使得代码更加结构化、可维护和可扩展。在这个“php简单面向对象的网站例子”中,我们将探讨如何在PHP中实现面向对象的基本原理,...

    PHP面向对象编程PDF

    - **概念解释**:详细解释了面向对象编程的核心概念,如类、对象、封装、继承、多态等。 - **类的设计**:介绍了如何设计类,包括属性和方法的定义、访问控制修饰符(public、private、protected)的使用等。 - **...

    php面向对象(类)教程

    本文将基于"php面向对象(类)教程"这一主题,深入探讨PHP中的面向对象编程(Object-Oriented Programming, OOP)概念,帮助初学者理解和掌握这一核心技能。 面向对象编程是一种编程范式,它通过类和对象来组织代码...

    php面向对象_刀客

    在“PHP5_OO_刀客羽朋”的压缩包中,可能包含了关于如何使用PHP进行面向对象编程的示例代码、教程或者工具,帮助开发者更好地理解和实践这些概念。通过学习这些资源,开发者可以提升自己的PHP OOP能力,编写出更高效...

    PHP面向对象(图像计算器)

    类是面向对象编程的基础,它定义了一组属性(数据成员)和方法(成员函数)。在这个图像计算器中,`Calculator`类可能有属性如`expression`(表达式)和`result`(结果),而方法如`calculate()`(计算)和`...

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

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

    php面向对象(分页)

    首先,我们需要了解面向对象的基本概念。在PHP中,类是创建对象的模板,它定义了对象的属性(变量)和行为(方法)。对象则是类的实例,它们具有类所定义的属性和行为。面向对象编程的三大特性包括封装、继承和多态...

    php5面向对象教程【技术文档】

    首先,我们来了解PHP5中面向对象的基础概念: 1. 类(Class):类是创建对象的模板,定义了对象的状态(属性,也称为成员变量或字段)和行为(方法,即函数)。在PHP5中,可以使用`class`关键字来定义一个类。 ```...

    PHP5面向对象编程(适合初学者)

    类是面向对象编程的基础,可以理解为一个模板或者蓝图,定义了具有相同属性和行为的一组对象。在PHP5中,我们使用`class`关键字来创建类。例如: ```php class Car { public $color; function drive() { echo ...

    深入PHP:面向对象、模式与实践(第三版)高清PDF和完整源码下载.rar

    总结来说,《深入PHP:面向对象、模式与实践》是一本全面而深入的PHP学习资料,适合有一定基础的PHP开发者提升自己的技能,也适合想要深入理解面向对象编程和设计模式的程序员。配合高清PDF和源码,读者可以在阅读的...

Global site tag (gtag.js) - Google Analytics