PHPメソッドがクラス外で機能しない

受付中 プログラミング
2024-12-24
hoge
未定義の変数が原因で関数が機能していません。その理由がわかりません。オブジェクト/クラスが機能する範囲がわからないと思います。$obj関数を呼び出すための参照を作成する必要がありますか?もしそうなら、なぜそれはこの例では機能しないのですか?
        <?php
            class employee {
        
                // Properties
                public $name;
                public $salary = 0;
                
                // Methods
                function set_name($name) {
                $this->name = $name;
        
                }
                function get_name() {
        
                return $this->name;
        
                }
                function set_salary($salary) {
                $this->salary = $salary;
        
                }
        
                function get_salary() {
        
                return $this->salary;
                }
        
                function populate()
                {
                    $worker = array();
                    $worker[0] = new employee();
                    $worker[0]->set_name('Linda');
                    $worker[0]->set_salary(5800);
                    $worker[1] = new employee();
                    $worker[1]->set_name('Manuel');
                    $worker[1]->set_salary(2750);
                    $worker[2] = new employee();
                    $worker[2]->set_name('Luis');
                    $worker[2]->set_salary(3200);
                    $worker[3] = new employee();
                    $worker[3]->set_name('Carly');
                    $worker[3]->set_salary(2999);
                    $i = 0;
                }
        
                function checkTaxes()
                {
                    while ($i < 4)
                    {
                        echo "Name: " . $worker[$i]->get_name();
                        echo " - Salary: " . $worker[$i]->get_salary();
                        
                        if ($worker[$i]->get_salary() >= 3000)
                        {
                            echo " - You have to pay taxes!<br><br>";
                        }
                        else
                        {
                            echo " - You don't have to pay taxes!<br><br>";
                        }
                        $i++;
                    }
                }
            }
            $obj = new employee;
            $obj->populate();
            $obj->checkTaxes();
        ?>
        
回答一覧
$workerで定義されていませんcheckTaxes() または他の関数を使用する場合$workerは、クラスで$ workerをandと同様に定義する必要があります。その後、で更新し、で読み込むことができます。checkTaxes()employeeprivate $worker = [];$name$salarypopulate()$this->worker[0] = xxx;checkTaxes()$this->worker[$i]->getxxx
hoge