方法(method)与函数非常类似,只不过方法是用来定义类的行为的。

与函数一样,方法可以接受输入参数,可以向调用者返回一个值。

方法的调用也与函数相同,只是在方法签名要加上调用方法的对象的名称,如下所示:

$object->method_name();

方法声明

可以使用与函数相同的语法创建方法。方法和一般函数之间唯一的区别是方法声明前面一般会有作用域描述符。一般语法如下:

scope function functionName()

{

//function body goes here

}

类的成员方法从本质上来讲也是一种函数,所以其存储结构也和常规函数一样,存储在zend_function结构体中。

对于一个类的多个成员方法,它是以HashTable的数据结构存储了多个zend_function结构体。

和前面的成员变量一样,在类声明时成员方法也通过调用zend_initialize_class_data方法,初始化了整个方法列表所在的HashTable。

在类中我们如果要定义一个成员方法,格式如下:

class NowaMagic {

public function show() {

echo 'Hello NowaMagic';

}

}

比如,名为calculateSalary()的公共方法如下:

public function calculateSalary()

{

return $this->wage*$this->hours;

}

在此例中,该方法通过使用 $this 关键字直接调用了类的两个字段:wage 和hours 。通过将两个字段的值相乘,计算工资,然后像函数一样返回结果。

但是注意,方法并不只限于操作类的字段,完全可以像函数一样向方法传递参数。

而对于公共方法,可以不显式地声明作用域,而是像声明函数(不带作用域声明)一样声明方法。

方法调用

调用方法与调用函数几乎相同。还是看前面的例子,可以如下调用calculatesalary()方法:

$employee = new Employee("Gonn");

$salary = $eoployee->calculatesalary();

php 类调用本身方法,PHP 类中方法的声明与调用相关推荐

  1. java 方法调用表达式_java lambda怎么表达式判断被调用接口名称和接口中方法

    1.首先能够用于lambda表达式的只能是interface,并且interface 中只有一个方法. 这就说明,只要找到接口类型就能确定用的是哪个方法.(如下:intTypeInterface.St ...

  2. java修饰方法_java接口中方法、属性修饰符详解

    java接口的修饰符:abstract(inteeface本身就是抽象的,加不加abstract都一样). 接口中字段的修饰符:public static final(默认不写) 如下解释: publ ...

  3. java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

  4. python中函数的调用_慢步python,编程中函数的概念,python中函数的声明和调用

    函数,曾经是一个很高大尚的概念.笔者是在高中数学里认识的函数,先是从y=2x+3 这条代数式开始的.y是因变量,x是自变量,y因为x取值的变化而变化. 再后来式子变成这样:f(x)=2x+3,f(x) ...

  5. 利用setTimeout方法控制JS中方法的执行顺序

    JS方面中有A和B方法,B必须在A执行完之后才能执行,怎么保证呢? 1.首先设一个标志(isAFinish),用来标识A是否执行完. 2.B方法执行的时候,判断 var isAFinish=false ...

  6. Spring中同一个类中方法调用事务不生效,非事务方法调用事务方式事务不生效

    我们假定在SerivceXXX中有两个方法: serviceA 非事务方法 serviceB事务方法 如果serviceA中方法定义类似如下: public void serviceA(){..... ...

  7. JAVA类思维_面向对象思维 Java中的类和对象及其应用

    一.面向过程与面向对象 面向过程: 从事务执行者的角度思考问题,我该干什么  重点在过程----事务流程 面向对象: 从事务的指挥者角度思考问题,我应该找谁干什么  重点在对象 面向对象的优点: 1. ...

  8. abstract类_【Java】类的结构 - Nemo

    类与对象 类中主要包括五种结构,下面进行对这五种结构进行详细的介绍. 1. 面向对象与面向过程 面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做. 面向对象:强调具备了功能的对象,以类/对象为 ...

  9. shell脚本函数声明,调用

    shell脚本中函数的声明, 调用,处理结果的返回等问题. 1. 函数声明 1.1 函数需要先声明后调用, 声明和调用有顺序要求. 1.2 shell中的函数返回值只能是数字, 返回0表示执行成功, ...

  10. 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )

    文章目录 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 args ...

最新文章

  1. python 调用 c 生成数组_python调用c++传递数组的实例
  2. java内存栅栏_内存屏障(Memory Barriers/Fences) - 并发编程中最基础的一项技术
  3. JDK8特性--Stream(求和,过滤,排序)
  4. 【转】Nginx系列(五)--nginx+tomcat实现负载均衡
  5. 【Nginx】location 指向某一个文件 / 指定路径访问某一文件
  6. python网络爬虫文献综述怎么写_毕业论文的文献综述怎么写
  7. linux PROC文件系统详解
  8. 67页综述深度卷积神经网络架构:从基本组件到结构创新
  9. CCF201503-2 数字排序
  10. c语言数据的自动转换类型吗,c语言的自动类型转换
  11. spring+mybatis 框架搭建
  12. 离散数学及其应用 前言
  13. C语言运算符优先级列表(超全)
  14. umail for linux,umail邮件服务器 For Linux安装图示(独立安装包)
  15. 真实性能大揭秘 热门移动显卡横向测试
  16. React Native 布局实现测试
  17. LibreOJ #6198.谢特 后缀数组+并查集+trie启发式合并
  18. mysql 字符集 表情_MySQL字符集(表情包)
  19. Wincc系统重启后保持内部变量的值不变的设置
  20. 音频剪切matlab,科学网—matlab的音频处理:读取,裁剪,输出和命名 - 张智昊的博文...

热门文章

  1. 聊聊我那些在快手的朋友们
  2. 直流电动机的等效电路
  3. tarjan算法 (割点和桥)
  4. NLP学习笔记(一)
  5. Dplayer使用注意点
  6. Oracle-Windows双击Oracle的setup.exe一闪而过;Oracle安装后的默认账号和密码
  7. 浅析云平台底层架构 进行云原生应用开发 系列课程-薛海涛-专题视频课程
  8. java 声明变量 初始化_Java变量的声明和初始化
  9. 汽车自动贩卖机出来了买车全部流程只需20分钟
  10. 计算机大比武大练兵实施方案,2016年“岗位大练兵、业务大比武”活动实施方案...