#php #c #pthreads
#php #c #pthreads
Вопрос:
Я только что установил pthreads для PHP. Однако, когда я создал объект класса thread. Переменные-члены объекта неинициализируются при создании объекта. Я не знаю почему, это мой код
Я создал новый объект следующим образом:
$request = new CopyFile('123','123','123','123','123');
Но все переменные $request неинициализированы. Я могу войти в конструктор CopyFile. И я обнаружил, что конструктор получил значения параметров, а значения передаются в $this .
Класс Thread:
class CopyFile extends Thread {
public $file;
public $extension;
public $location;
public $type;
public function __construct($file,$extension,$location,$type,$id){
$this->$file = $file;
$this->$extension = $extension;
$this->$location = $location;
$this->$type = $type;
$this->$id = $id;
}
public function run(){
$key = $this.$location . '/' . $this.$id . '.' . $this.$extension;
log::info($result);
}
}
Ответ №1:
Ваш конструктор неверен, он должен быть таким, как показано ниже. Чтобы присвоить значение или получить доступ к переменным-членам, вам нужен следующий синтаксис
$this->var_name = 'some_val' ; // no $ sign before the variable name
public function __construct($file,$extension,$location,$type,$id){
$this->file = $file;
$this->extension = $extension;
$this->location = $location;
$this->type = $type;
$this->id = $id;
}
Аналогично
$key = $this.$location . '/' . $this.$id . '.' . $this.$extension;
Должно быть
$key = $this->location . '/' . $this->id . '.' . $this->extension;
Вам также может потребоваться иметь идентификатор переменной что-то вроде
public $id ;
Комментарии:
1. Большое спасибо, Абхик. Я потратил на это много часов. Вы решили мои проблемы всего за минуту. Мне нужно больше узнать об объектно-ориентированном синтаксисе.
2. Добро пожаловать, и да, ознакомьтесь с руководством по PHP, в нем есть хорошие примеры для начала.