2010-03-22 2 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, не будет работать - вы не можете использовать функции в определениях классов.

Вам нужно будет сделать расчет в конструкторе класса, который был бы более чистым способом выполнения заданий в любом случае. В классе, добавьте:

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

, а затем инициализировать класс:

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

Государственные и частные применяются только к переменным внутри класса, где-нибудь еще бесполезно. Вы не можете запрашивать переменную из функции, поэтому ее нельзя определить как public/private/protected. Переменные внутри функции могут иметь только статическую привязку к ним (по крайней мере, это единственное, что я когда-либо применял к переменной внутри функции).

Смежные вопросы