当前位置: 首页 > 面试题库 >

何时在$ this上使用self?

澹台承
2023-03-14
问题内容

在PHP 5中,使用self和之间有什么区别$this

什么时候合适?


问题答案:

使用$this来指代当前对象。用self指当前类。换句话说,
$this->member用于非静态成员,self::$member用于静态成员。

完整答案

这里是一个例子 正确 的使用$thisself用于非静态和静态成员变量:

<?php
class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo $this->non_static_member . ' '
           . self::$static_member;
    }
}

new X();
?>

这里是一个例子 不正确 的使用$thisself用于非静态和静态成员变量:

<?php
class X {
    private $non_static_member = 1;
    private static $static_member = 2;

    function __construct() {
        echo self::$non_static_member . ' '
           . $this->static_member;
    }
}

new X();
?>

这是带有for成员函数的 多态 示例$this

<?php
class X {
    function foo() {
        echo 'X::foo()';
    }

    function bar() {
        $this->foo();
    }
}

class Y extends X {
    function foo() {
        echo 'Y::foo()';
    }
}

$x = new Y();
$x->bar();
?>

这是通过使用for成员函数来 抑制多态行为 的示例self

<?php
class X {
    function foo() {
        echo 'X::foo()';
    }

    function bar() {
        self::foo();
    }
}

class Y extends X {
    function foo() {
        echo 'Y::foo()';
    }
}

$x = new Y();
$x->bar();
?>


 类似资料:
  • 问题内容: 在Java中使用关键字的最佳做法是什么?例如,我有以下课程: 没关系,但是Java足够聪明,如果我将构造函数中的语句更改为 那么为什么要使用this关键字呢?(我意识到在某些情况下,完全有必要使用它,我只是在问这种情况)。实际上,出于可读性的考虑,我倾向于仅使用关键字,但是常见的做法是什么?例如,在整个商店中使用它会使我的代码看起来有些混乱 显然,代码很少,但是它说明了我的示例。在这些

  • 问题内容: 我知道这是指当前对象。但我不知道何时真正需要使用它。例如,如果我使用x而不是某些方法,会有什么区别吗?可能会引用所考虑方法的局部变量吗?我的意思是仅在此方法中可见的变量。 那呢 我可以使用吗?我应该使用它吗?如果仅使用,默认情况下是否不会将其应用于当前对象? 问题答案: 该关键字在三种情况下,主要使用。第一种也是最常见的是使用方法消除变量引用的歧义。第二种是当需要将当前类实例作为参数传

  • 问题内容: 这是有错误的部分。 致命错误:第6行/pb_events.php中不在对象上下文中时使用$ this 第6行是: 非常感谢!欣赏! 问题答案: $这仅在方法中有意义,在函数中没有意义 还行吧 这不是 //编辑:没有注意到他将“ $ this”作为参数传递 建议:只需将“ $ this”替换为“ $ somethingElse”

  • 问题内容: 我刚遇到一个非常复杂的查询,要花8秒钟才能运行。EXPLAIN显示了一个奇怪的表顺序,即使使用FORCE INDEX提示也没有全部使用我的索引。我遇到了STRAIGHT_JOIN连接关键字,并开始用它替换一些INNER JOIN关键字。我注意到速度有了很大提高。最终,我为此查询将所有INNER JOIN关键字替换为STRAIGHT_JOIN,它现在可以在0.01秒内运行。 我的问题是何

  • 问题内容: 我经常发现自己需要使用matplotlib在Python中创建热图样式的可视化效果。Matplotlib提供了几种功能,它们显然可以完成相同的操作。 建议代替但是什么之间的差值(从实用的角度作为数据绘图仪)和?相互使用时的利弊是什么?在哪种情况下,一个或另一个将是明显的赢家? 问题答案: 从根本上讲,假定数组中的所有数据元素均应以相同的大小呈现,而/将数据数组的元素与矩形元素(其大小可

  • 你能帮我用下面的代码吗。错误是:“不能在静态上下文中使用此”