Php 将调用函数的方式从this::更改为this->;
这就是。。。我有一个带有一些函数的简单类,但我需要改变调用这些函数的方式 原来这个班是这样的Php 将调用函数的方式从this::更改为this->;,php,function,call,Php,Function,Call,这就是。。。我有一个带有一些函数的简单类,但我需要改变调用这些函数的方式 原来这个班是这样的 <?php class Bcrypt { const DEFAULT_WORK_FACTOR = 8; public static function hash($password, $work_factor = 0) { ... } public static function check($password, $stored_hash, $legacy_handler = NULL) {
<?php
class Bcrypt {
const DEFAULT_WORK_FACTOR = 8;
public static function hash($password, $work_factor = 0) { ... }
public static function check($password, $stored_hash, $legacy_handler = NULL) { ... }
}?>
Bcrypt::hash($data['password'])
我需要做的是将此呼叫更改为:
$this->bcrypt->hash($data['password'])
我知道这可能是一个简单的问题,但我需要澄清一些概念 使您的函数非静态
并对类和对象进行一些阅读。为了使用->,您必须实例化您的类。函数调用的语法取决于函数是否是静态的,因此直接的答案是“从函数声明中删除
静态的
关键字”
然而,一个方法是否是静态的决不应该是一个偏好的问题;这应该是一个设计决策。您没有说明为什么需要进行此更改,发布的代码中没有提供相关提示的内容,在这种情况下,首先将方法设置为static
这就留下了一个悬而未决的问题:为什么要问?有三种方法可以调用方法或变量 类外部的静态变量/方法
class Test {
public static function testFunc() {}
}
Test::testFunc();
class Test {
public static function testFunc() {}
public static function testFromInside() {
return self::testFunc(); // you can do this with Test::testFunc() as well
}
}
Test::testFromInside();
类内部的静态变量/方法
class Test {
public static function testFunc() {}
}
Test::testFunc();
class Test {
public static function testFunc() {}
public static function testFromInside() {
return self::testFunc(); // you can do this with Test::testFunc() as well
}
}
Test::testFromInside();
类内部的非静态变量
class Test {
public $test;
public function testFunc() {
return $this->test;
}
}
$test = new Test;
$test->test;
$test->testFunc();
如果不清楚,请告诉我,我会尽力解释清楚。听起来你不知道公共和静态的区别 静态意味着您不需要像您这样使用实例来调用函数 如果要使用箭头,需要将函数公开并首先创建实例 你必须做的是: //首先创建类的实例
$bcrypt = new Bcrypt();
//调用实例变量并选择函数
$bcrypt->hash($data['password']);
了解静态和公共的区别是非常重要的。
我希望它能帮助你 为什么不能这样做:$this->bcrypt::hash($data['password']);看,你真的知道这些操作符的意思吗?(相关)然后读@Gordon的链接我只是尝试一下,但我得到:致命错误:调用非对象上的成员函数hash(),这是实例化部分。您需要创建一个对象,首先对其调用方法。这是绝对基本的OO编程,所以你至少应该读一读$bcrypt=新的bcrypt();好啊我读到关于。。我有点沮丧。。有些人似乎生来就知道这类事情,但我不知道。。你能给我更明确的指导吗??