- Home
- Categorie
- Coding e Sistemistica
- Coding
- problemi con funzioni in php
-
problemi con funzioni in php
Cari amici ho il seguente problema:
[php]<html>
<head>
<title>Proviamo PHP</title>
<head><?php
class Employee {public function __construct ($name,$salary){
$this-> $name = $name;
$this-> $salary = $salary;
echo "<br>costruttore employee= " , $name , "<br>salary= " , $salary;
}public function getName(){
return $name;
}
public function getSalary(){
return $salary;
}public function calcolaSalary($val){
$num=100;
return ( $salary * $val)/$num ;
}
private $name;
private $salary;
}class Manager extends Employee {
public function __construct ($name,$salary){
$this-> $name = $name;
$this-> $salary = $salary;
parent:: __construct($name,$salary);// chiamo il costruttore di Employee
echo "<br>costruttore Manager= " , $name , "<br>salary=" , $salary;
$bonus=0;
}public function setBonus($b){
return $bonus=$b;
}public function getSalary(){
$baseSalary= parent:: getSalary();
return $baseSalary + $bonus ;
}private $bonus;
private $name;
private $salary;
}
?>
</head>
<body>
<?php$x=80; $y=50; $z=40; $Carl="carlo"; $luca="luca";
$boss = new Manager($Carl, $x);
$boss->setBonus($x);$staff0=$boss;
$staff1=new Employee ($luca, $y);
$staff2=new Employee ($luca, $z);$e= $staff0;
echo "<br><br>i valori sono = " , $boss->getName();
echo "<br><br>i salari sono = " , $boss->getSalary();$e= $staff1;
echo "<br><br>i valori sono = " , $e->getName();
echo "<br><br>i salari sono = " , $e->getSalary();?>
</body>
</HTML>[/php]Ma quando chiamo $e->getName() ;$e->getSalary();$boss->getName();
;$boss->getSalary(); mi stampa i salari sono =
Notice: Undefined variable: salary per tutti, come mai? Grazie mille per attenzione.
-
Ciao torson,
fai attenzione alle maiuscole e alla punteggiatura...
Per quanto riguarda il problema, alcuni metodi non utilizzato $this, pertanto fanno riferimento a variabili non esistenti.
-
Ciao grazie per la risposta ma proprio non riesco a trovare il problema :bho: se riesci ad essere più chiaro te ne sono grato ciao e grazie ancora.
-
Fai attenzione alle maiuscole e a non utilizzare lo stile sms nei tuoi messaggi...
Utilizzi $salary che è una variabile in alcuni metodi, quando dovresti usare l'attributo della classe, che sarebbe $this->salary.
-
Ciao scusami per la domanda banale ma perchè si deve usare
$this->Nomevariabile anche nel metodo get non basta il nome della variabile???? E poi quando metto $this-> mi da un nuovo errore fatal error etcboh io pensavo di mettere le variabili private a global ma come si fa???:) Grazie mille.
-
Fai attenzione alla punteggiatura e alle maiuscole, ti segnalo le nostre regole:
3.1. I titoli ed i testi devono essere scritti in italiano corretto, sia grammaticamente che ortograficamente; postare frasi con errori evidenti è sempre una forma di NON rispetto per chi legge.
3.2. Iniziare i messaggi con la maiuscola e terminare con un punto.
3.3. Lasciare spazi dopo la punteggiatura.
3.4. Non sono consentiti termini abbreviativi da sms come: nn_mlt_cn_qst_sn_xkè_ke_x_cmq+*_ ***ecc..
Oltre ad una pessima capacità comunicativa, tali sigle così come gli errori di battitura, NON sono recepiti dai bot dei motori di ricerca, vanificando un'adeguata indicizzazione della pagina.
Il Moderatore editerà a sua discrezione testi ritenuti sgrammaticati o in stile da telefonini.
Per quanto riguarda il problema $this->qualcosa rappresenta l'attributo della classe e non una variabile. In ogni caso gli errori devi incollarli esattamente come sono, altrimenti se indichi esclusivamente il tipo di errore non è possibile capire nulla.