php同名方法,php名字

本文目录一览:

php中相同名称的方法,父类方法为静态子类能否为非静态方法

不可以。

子类会继承父类中的静态方法,相当于在子类中定义了同名的静态方法和成员方法。

这样当在子类上调用该方法时,会产生歧义,因为无法确定调用的是静态还是非静态方法,所以编译器不允许这样的情况发生。

php怎么方法重载

php面向对象(OOP)编程完全教程:12.重载新的方法

在学习PHP 这种语言中你会发现, PHP中的方法是不能重载的, 所谓的方法重载就是定义相同的方法名,通过“参数的个数“不同或“参数的类型“不同,来访问我们的相同方法名的不同方法。但是因为PHP是弱类型的语言, 所以在方法的参数中本身就可以接收不同类型的数据,又因为PHP的方法可以接收不定个数的参数,所以通过传递不同个数的参数调用不相同方法名的不同方法也是不成立的。所以在PHP里面没有方法重载。不能重载也就是在你的项目中不能定义相同方法名的方法。另外,因为PHP没有名子空间的概念,在同一个页面和被包含的页面中不能定义相同名称的方法, 也不能定义和PHP给我提供的方法的方法重名,当然在同一个类中也不能定义相同名称的方法。

我们这里所指的重载新的方法所指的是什么呢?其实我们所说的重载新的方法就是子类覆盖父类的已有的方法,那为什么要这么做呢?父类的方法不是可以继承过来直接用吗?但有一些情况是我们必须要覆盖的,比如说我们前面提到过的例子里面, “Person”这个人类里面有一个“说话”的方法,所有继承“Person”类的子类都是可以“说话”的, 我们“Student”类就是“Person”类的子类,所以“Student”的实例就可以“说话“了, 但是人类里面“说话”的方法里面说出的是“Person”类里面的属性, 而“Student”类对“Person”类进行了扩展,又扩展出了几个新的属性,如果使用继承过来的“say()”说话方法的话,只能说出从“Person”类继承过来的那些属性,那么新扩展的那些属性使用这个继承过来的“say()”的方法就说不出来了,那有的人就问了,我在“Student”这个子类中再定义一个新的方法用于说话,说出子类里面所有的属性不就行了吗?一定不要这么做, 从抽象的角度来讲, 一个“学生”不能有两种“说话”的方法,就算你定义了两个不同的说话的方法,可以实现你想要的功能,被继承过来的那个“说话“方法可能没有机会用到了,而且是继承过来的你也删不掉。这个时候我们就要用到覆盖了。

虽然说在PHP里面不能定义同名的方法, 但是在父子关系的两个类中,我们可以在子类中定义和父类同名的方法,这样就把父类中继承过来的方法覆盖掉了。

代码

?

//定义一个”人”类做为父类

class Person

{

//下面是人的成员属性

var $name; //人的名子

var $sex; //人的性别

var $age; //人的年龄

//定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值

function __construct($name, $sex, $age)

{

$this-name=$name;

$this-sex=$sex;

$this-age=$age;

}

//这个人可以说话的方法, 说出自己的属性

function say()

{

echo “我的名子叫:”.$this-name.” 性别:”.$this-sex.” 我的年龄是:”.$this-age;

}

}

class Student extends Person

{

var $school; //学生所在学校的属性

//这个学生学习的方法

function study()

{

echo “我的名子叫:”.$this-name.” 我正在”.$this-school.” 学习”;

}

//这个学性可以说话的方法, 说出自己所有的属性,覆盖了父类的同名方法

function say()

{

echo “我的名子叫:”.$this-name.” 性别:”.$this-sex.” 我的年龄是:”.$this-age.”我在”.$this-school.”上学;

}

}

?

上面的例子, 我们就在“Student”子类里覆盖了继承父类里面的”say()”的方法,通过覆盖我们就实现了对“方法”扩展。

但是,像这样做虽然解决了我们上面说的问题,但是在实际开发中,一个方法不可能就一条代码或是几条代码,比如说“Person”类里面的“say()”方法有里面有100条代码,如果我们想对这个方法覆盖保留原有的功能外加上一点点功能,就要把原有的100条代码重写一次, 再加上扩展的几条代码,这还算是好的,而有的情况,父类中的方法是看不见原代码的,这个时候你怎么去重写原有的代码呢?我们也有解决的办法,就是在子类这个方法中可以调用到父类中被覆盖的方法, 也就是把被覆盖的方法原有的功能拿过来再加上自己的一点功能,可以通过两种方法实现在子类的方法中调用父类被覆盖的方法:

一种是使用父类的“类名::“来调用父类中被覆盖的方法;

一种是使用“parent::”的方试来调用父类中被覆盖的方法;

代码

class Student extends Person

{

var $school; //学生所在学校的属性

//这个学生学习的方法

function study()

{

echo “我的名子叫:”.$this-name.” 我正在”.$this-school.” 学习”;

}

//这个学性可以说话的方法, 说出自己所有的属性,覆盖了父类的同名方法

function say()

{

//使用父类的”类名::”来调用父类中被覆盖的方法;

// Person::say();

//或者使用”parent::”的方试来调用父类中被覆盖的方法;

parent::say();

//加上一点自己的功能

echo “我的年龄是:”.$this-age.”我在”.$this-school.”上学.”;

}

}

现在用两种方式都可以访问到父类中被覆盖的方法,我们选那种方式最好呢?用户可能会发现自己写的代码访问了父类的变量和函数。如果子类非常精炼或者父类非常专业化的时候尤其是这样。 不要用代码中父类文字上的名字,应该用特殊的名字 parent,它指的就是子类在 extends 声明中所指的父类的名字。这样做可以避免在多个地方使用父类的名字。如果继承树在实现的过程中要修改,只要简单地修改类中 extends 声明的部分。

同样,构造方法在子类中如果没有声明的话,也可以使用父类中的构造方法,如果子类中重新定义了一个构造方法也会覆盖掉父类中的构造方法,如果想使用新的构造方法为所有属性赋值也可以用同样的方式。

代码

class Student extends Person

{

var $school; //学生所在学校的属性

function __construct($name, $sex, $age, $school)

{

//使用父类中的方法为原有的属性赋值

parent::__construct($name, $sex, $age);

$this-school=$school;

}

//这个学生学习的方法

function study()

{

echo “我的名子叫:”.$this-name.” 我正在”.$this-school.” 学习”;

}

//这个人可以说话的方法, 说出自己的属性

function say()

{

parent::say();

//加上一点自己的功能

echo “我的年龄是:”.$this-age.”我在”.$this-school.”上学.”;

}

}

php 根据某字串,建立一个同名变量

用$$字符串变量名 即用双$符号

例如:$name = “abc”;

$abc = “123456”;

echo $$name;//输出123456

PHP数组如何实现同名(标题)资源合并?

else{

return $value;

}

这个语句中的 return $value; 换成 continue; 试一下吧,因为

continue是用于 跳出本次循环,return是用来结束一段代码

private function vod_db_find($vod){

// 要查询检查的字段

$field = ‘vod_id,vod_cid,vod_name,vod_actor’;

// 按标题检测

$where = array();

$where[‘vod_cid’] = array(‘eq’, $vod[‘vod_cid’]);

$where[‘vod_name’] = array(‘like’, $vod[‘vod_name’].’%’);

$array_list = M(‘Vod’)-field($field)-where($where)-limit(20)-order(‘vod_id desc’)-select();

foreach($array_list as $key=$value){

// 有相同标题是否需再次验证艺人

if($value[‘vod_name’] == $vod[‘vod_name’]){

$arr_actor_1 = explode(‘,’, ff_xml_vodactor($vod[‘vod_actor’]));//数据库艺人

$arr_actor_2 = explode(‘,’, ff_xml_vodactor($value[‘vod_actor’]));//未入库前艺人

if( array_intersect($arr_actor_1,$arr_actor_2) ){

return $array_list[$key];

}else{

$vod[‘vod_status’] = -1;//标识为需审核

return $vod;

}

}else{

continue;

}

}

return $vod;

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/155292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-17 02:39
下一篇 2024-11-17 02:39

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • 使用Vue实现前端AES加密并输出为十六进制的方法

    在前端开发中,数据传输的安全性问题十分重要,其中一种保护数据安全的方式是加密。本文将会介绍如何使用Vue框架实现前端AES加密并将加密结果输出为十六进制。 一、AES加密介绍 AE…

    编程 2025-04-29
  • 用不同的方法求素数

    素数是指只能被1和自身整除的正整数,如2、3、5、7、11、13等。素数在密码学、计算机科学、数学、物理等领域都有着广泛的应用。本文将介绍几种常见的求素数的方法,包括暴力枚举法、埃…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • Python学习笔记:去除字符串最后一个字符的方法

    本文将从多个方面详细阐述如何通过Python去除字符串最后一个字符,包括使用切片、pop()、删除、替换等方法来实现。 一、字符串切片 在Python中,可以通过字符串切片的方式来…

    编程 2025-04-29
  • 用法介绍Python集合update方法

    Python集合(set)update()方法是Python的一种集合操作方法,用于将多个集合合并为一个集合。本篇文章将从以下几个方面进行详细阐述: 一、参数的含义和用法 Pyth…

    编程 2025-04-29

发表回复

登录后才能评论