尝试在函数中使用私有变量时出错代码

时间:2010-03-22 21:54:22

标签: php php-parse-error

我收到错误消息

  

解析错误:语法错误,意外   T_PRIVATE in   E:\ PortableApps \ XAMPP \ htdocs中\ SN \ AC \ ACclass.php   在第6行

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

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

    $ac = new ac();

3 个答案:

答案 0 :(得分:14)

您没有在函数/方法中定义类属性(public / private / etc)。你是在课堂上做的。

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

如果要在函数/方法中定义变量,只需声明它们而不使用public / private / protected

$plain_username = $_POST['username'];

答案 1 :(得分: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"]);

答案 2 :(得分:1)

公共和私有仅应用于类中的变量,其他任何地方都是无用的。您无法从函数请求变量,因此无法将其定义为public / private / protected。函数中的变量只能应用静态(至少这是我应用于函数内部变量的唯一内容)。