首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PHP:从类中调用类函数

PHP:从类中调用类函数
EN

Stack Overflow用户
提问于 2012-12-20 00:10:39
回答 3查看 561关注 0票数 2

开始一个新的PHP项目,并决定在经过几年的PHP开发后,我认为我真的应该开始使用PHP类。我习惯了C++世界中的类,所以在将这些知识移植到PHP时,有一些事情我不是很确定。

在C++中,您可以自动访问任何没有前缀的类变量,而在PHP中,您似乎需要为所有此类访问(变量和函数)添加前缀this->。我知道this是什么(或者至少我认为是,指向当前类实例的指针),但我不确定它是必需的还是首选的,或者是否有其他选择。我的类将在同一个类中大量使用其他函数(例如,它本身),所以每次都必须输入this->将非常耗时。

类本身很可能是单例的,所以我不确定是实际使用一个类,还是仅仅在函数前面加上一个标识符。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-20 00:16:44

“C++”(->) !=指针。

$this是指当前的类和实例。所有变量都可以使用$this->variable;$this->function();进行访问。

可以使用self::$variableself::function()访问静态变量和函数

在类实例外部,必须指定类实例:$foo->variable;$foo->function();

据我所知,如果不使用$this->self::,就无法访问类中的公共/私有/静态/常量变量

关于使用函数的对象...你说了算。您是否计划稍后扩展代码以添加更多功能?所有的函数都有某种程度的关联吗?如果它们是单例函数,那么只编写一个函数而不是一个类并没有什么坏处。这真的取决于你想要实现的目标。

票数 2
EN

Stack Overflow用户

发布于 2012-12-20 00:14:46

需要引用成员所属的对象才能访问成员。

每个方法调用或属性访问都以$variable->为前缀- $this是一个引用当前对象实例的神奇变量。它的使用不是可选的。

这是因为(还有其他原因)因为PHP中的每个函数都不是方法,还有全局函数。如果引用函数时未将其与对象关联,则假定该函数为全局函数。

作为附注,您应该避免在PHP中使用单例-使用它们不会获得性能/内存增益,因为每个并发执行的脚本都被封闭在自己的内存空间中。

票数 6
EN

Stack Overflow用户

发布于 2012-12-20 00:18:23

是的,在访问类方法或变量时,您必须使用$this

您需要记住,PHP不要求声明变量,因此请想象以下情况:

代码语言:javascript
复制
<?
class A {
  public $a = 'Hello World!';
  function hello() {
    $a = 'hello';
    echo $a;
  }
}

$object = new A();
echo $object->hello();

$a将是局部作用域,而$this->a将是类变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13956451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档