2010-03-22 85 views
4

使用私有变量,我得到的是说错误代码,而试图在功能

Parse error: syntax error, unexpected T_PRIVATE in E:\PortableApps\xampp\htdocs\SN\AC\ACclass.php on line 6

试图运行我的脚本错误。我是PHP新手,想知道是否有人能指出我的错误。这是该部分的代码。

<?php 
class ac 
    { 
    public function authentication() 
    { 
    private $plain_username = $_POST['username']; 
    private $md5_password = md5($_POST['password']); 

    $ac = new ac(); 

回答

14

你没有定义的函数/方法的类属性(公共/私营/等)。你在课堂上做到这一点。

class ac 
{ 
    private $plain_username; 
    private $md5_password; 
    public function authentication() 
    { 
     private $this->plain_username = $_POST['username']; 
     private $this->md5_password = md5($_POST['password']); 
    } 
} 
//declare a class outside the class 
$ac = new ac(); 

如果你想在一个函数/方法来定义变量,只是声明他们没有公共/私营/保护

$plain_username = $_POST['username']; 
3

您正在声明方法中的private变量,这是不可能的。

如果你想ac有私有变量,你必须声明它们的类定义:

class ac 
{ 

    private $plain_username = $_POST['username']; 
    private $md5_password = md5($_POST['password']); 

,并使用

public function authentication() 
{ 

echo $this->plain_username; 

顺便访问他们在类的方法,分配md5_password声明将无法工作 - 你不能在类定义中使用的功能。

你将不得不做md5计算在类的构造函数,这将是无论如何做任务的更清洁的方式。在课堂上,添加:

function __construct ($plain_username, $password) 
{ 
    $this->plain_username = $plain_username; 
    $this->md5_password = md5 ($password); 
} 

然后初始化类:

$ac = new ac($_POST["username"], $_POST["password"]); 
1

公共及私有类中仅适用于变量,其他地方没用。你不能从一个函数要求一个变量,因此它不能被界定为公共/私营/保护。在函数内部变量只能有静态应用了(至少这是我曾经应用于变量的函数里面的唯一的事情)。