Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使一个PHP类在其构造函数中实例化另一个类?_Php_Oop - Fatal编程技术网

如何使一个PHP类在其构造函数中实例化另一个类?

如何使一个PHP类在其构造函数中实例化另一个类?,php,oop,Php,Oop,我对这里和PHP都是新手 我想知道在另一个类构造函数的参数中实例化一个类的正确方法是什么 (我在波顿有一些狗屎测试) 这就是我想要实例化的类: class KeyValues { public $numeroPrimo_1; public $numeroPrimo_2; public $message; public function KeyValues ($primo1, $primo2, $message) { $this->nume

我对这里和PHP都是新手

我想知道在另一个类构造函数的参数中实例化一个类的正确方法是什么

(我在波顿有一些狗屎测试)

这就是我想要实例化的类:

class KeyValues {

    public $numeroPrimo_1;
    public $numeroPrimo_2;
    public $message;

    public function KeyValues ($primo1, $primo2, $message) {
        $this->numeroPrimo_1 = $primo1;
        $this->numeroPrimo_2 = $primo2;
        $this->message = $message;
    }

    #getters and setters
 }
这就是我得到的错误

PHP注意:未定义变量:第72行/home/rodolfolottin/gitrepositories/Crypto/CryptoControl.PHP中的keyValues PHP致命错误:在第72行的/home/rodolfolottin/gitrepositories/Crypto/CryptoControl.PHP中对非对象调用成员函数getMessage()


感谢您的帮助…

更改以下行

$message = $keyValues->getMessage();

类中方法内部的
$keyValues
引用局部变量。当您使用
$this
关键字访问时,它引用该类对象的属性

class KeyValues {

    public $numeroPrimo_1;
    public $numeroPrimo_2;
    public $message;

    public function KeyValues ($primo1, $primo2, $message) {
        $this->numeroPrimo_1 = $primo1;
        $this->numeroPrimo_2 = $primo2;
        $this->message = $message;
    }
    public function getMessage() {
        return $this->message;
    }

    #getters and setters
 }


class CryptoControl {

    public $helper;
    public $keyValues;

    public function __construct ($primo1, $primo2, $message) {
        $this->helper = new MathHelper();
        $this->keyValues = new KeyValues($primo1, $primo2, $message);
    }

    public function criptografa_descriptografa_simetrica() {

        $message = $this->keyValues->getMessage();
        echo "Texto original: " . $message . "\n";
        echo "Chave criptografada: " . base64_encode($message) . "\n";
        $message_criptografada = base64_encode($message);
        echo "Chave descriptografada: " .    base64_decode($message_criptografada) . "\n";
    }
}

$exec = new CryptoControl(17, 41, "TURING");

$resposta = $exec->criptografa_descriptografa_simetrica();

echo $resposta;
$message = $this->keyValues->getMessage();
class KeyValues {

    public $numeroPrimo_1;
    public $numeroPrimo_2;
    public $message;

    public function KeyValues ($primo1, $primo2, $message) {
        $this->numeroPrimo_1 = $primo1;
        $this->numeroPrimo_2 = $primo2;
        $this->message = $message;
    }
    public function getMessage() {
        return $this->message;
    }

    #getters and setters
 }


class CryptoControl {

    public $helper;
    public $keyValues;

    public function __construct ($primo1, $primo2, $message) {
        $this->helper = new MathHelper();
        $this->keyValues = new KeyValues($primo1, $primo2, $message);
    }

    public function criptografa_descriptografa_simetrica() {

        $message = $this->keyValues->getMessage();
        echo "Texto original: " . $message . "\n";
        echo "Chave criptografada: " . base64_encode($message) . "\n";
        $message_criptografada = base64_encode($message);
        echo "Chave descriptografada: " .    base64_decode($message_criptografada) . "\n";
    }
}

$exec = new CryptoControl(17, 41, "TURING");

$resposta = $exec->criptografa_descriptografa_simetrica();

echo $resposta;