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 · 236 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.