function print_selector($option = "", $name = false){
if(!$name) $name = $this->primary;
.
.
.
if(!$name) kan du byta ut till if($name === false) om du vill att $name ska kunna vara "0" eller liknande.
7 svar · 241 visningar · startad av nkrantz
Hej,
Man kan ju definiera indata till funktioner i samband med att man skapar functionen. Typ: function funkNamn($foo = "bar"); Så som jag förstått det så tilldelas $foo "bar" om det är så att $foo inte definieras i anropet.
Men, jag får pase error på följande class:
class Admin_Group
{
var $tbl_name;
var $primary;
function Admin_Group()
{
$this->tbl_name = "tbl_name";
$this->primary = "primary_id";
}
function print_selector($option = "", $name = $this->primary)
{
.
.
.
.
.
.
.
Felkoden kommer på raden där print_selector finns och om jag tar bort $this->primary så funkar det, så jag misstänker att det är den privata variabeln som spökar.
Hur löser jag detta?
// Nippe
function print_selector($option = "", $name = false){
if(!$name) $name = $this->primary;
.
.
.
if(!$name) kan du byta ut till if($name === false) om du vill att $name ska kunna vara "0" eller liknande.
Jo, så kan man ju göra, men varför funkar det inte att kalla på den privata variabeln i funtionen?
// Nippe
Jag vet inte, men gissar på att det inte går för att $this->name inte är konstant. Du kan inte heller skriva t.ex function a($b = $_POST['b']) (om jag nu inte minns helt fel, var ett tag sen jag försökte).
Ah, där kanske vi har svaret! Fast det skumma är ju att $this->name deklareras i konstruktorn som skapar objektet innan funktionen kallas...
Nåja, får väl lösa det på annat sätt!
// Nippe
nkrantz skrev:
Ah, där kanske vi har svaret! Fast det skumma är ju att $this->name deklareras i konstruktorn som skapar objektet innan funktionen kallas...
Jo, men det är inte en konstant i koden/klassen utan endast konstant i objektet. Alltså det kan ju variera från objekt till objekt, medan "abc" är ju konstant hela tiden, om du förstår vad jag menar.
Jo, men i sådana fall skulle man ju kunna argumentera att en in-variabel i ett funktionsanrop inte heller är konstant... Om jag skulle göra så att jag har en funktion som först hämtar värdet som $this->name har innan jag anropar funktionen och sedan lägger in det som in-parametervärde så skulle det ju funka...
Men nåja...
Jo, men min gissning var att om du har ett defaultvärde på en parameter så ska det vara konstant, men det är som sagt en gissning.