可以在没有类的情况下调用函数吗? PHP

时间:2014-05-16 15:14:56

标签: php function class

可以在没有类外的类的情况下调用函数吗?

我找到了一些代码,我发现它为我的密码进行哈希和身份验证。然而,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');

他们都没有工作并且显示出致命的错误:等等等等找不到。

感谢您的阅读和帮助。

3 个答案:

答案 0 :(得分:2)

您需要开始上课。

$password = new PasswordHash($pass);
echo $password->create_hash;

或类似的东西。

答案 1 :(得分:1)

几个问题:

  • create_hash('$pass')将创建字符串$pass的哈希值,而不是变量的值,传递方式如下:create_hash($pass)
  • 您必须先创建类的实例,然后才能调用其方法。
  • 您链接到非OO代码示例,为什么还要使用类,而不是使用已存在的代码?

所以,如果你打算继续使用这个类:

$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);

这就是它所需要的一切。 只是被包括在内,然后你可以像在课堂上的任何其他功能一样调用它。