可以在没有类外的类的情况下调用函数吗?
我找到了一些代码,我发现它为我的密码进行哈希和身份验证。然而,php文件只在函数的顶部没有类声明。我不知道如何从其他页面调用这些函数。 Here is the hashing file I'm using
Hashing文件设置如下:
<?php
public function MyFunction() {
}
而不是这样:
<?php
class MyClass{
public function MyFunction() {
}
}
我试过了 include_once'SeamHash.php';
然后在我的页面中调用这些函数:
Echo PasswordHash::create_hash('$Pass');
Echo create_hash('$Pass');
Echo PasswordHash->create_hash('$Pass');
他们都没有工作并且显示出致命的错误:等等等等找不到。
感谢您的阅读和帮助。
答案 0 :(得分:2)
您需要开始上课。
$password = new PasswordHash($pass);
echo $password->create_hash;
或类似的东西。
答案 1 :(得分:1)
几个问题:
create_hash('$pass')
将创建字符串$pass
的哈希值,而不是变量的值,传递方式如下:create_hash($pass)
所以,如果你打算继续使用这个类:
$hasher = new MyClass();//or whatever name you gave the class
echo 'The hash of the password is: ', $hasher->createHash($pass);//<-- change createHash with correct method name
如果要复制粘贴示例代码(如果允许的话),只需像任何旧函数一样调用它:
echo 'The hash of the password is: ', create_hash($pass);
但要确保声明函数:
if (!function_exists('create_hash'))
include 'path/to/file/containing/create_hash_functions.php';
哦,类外的函数没有访问修饰符:
function thisWorks(){}
//note: no public
public function thisFails(){}// <== error!
答案 2 :(得分:0)
我发现你必须创建对象,然后才能使用它。 没有必要让它只是一个类的功能。
include_once '../Resources/PasswordHash.php';
$result = validate_password("foobar", $hash);
这就是它所需要的一切。 只是被包括在内,然后你可以像在课堂上的任何其他功能一样调用它。