Bu kod ne anlama geliyor? Bu php bir işaretçi bildirmek nasıl?
$this->entryId = $entryId;
Variable names in PHP start with $ so $entryId is the name of a variable. $this is a special variable in Object Oriented programming in PHP, which is reference to current object. -> is used to access an object member (like properties or methods) in PHP, like the syntax in C++. so your code means this:
Bu nesnenin entryid alan (veya özellik) içine değişken $ entryid değerini yerleştirin.
& PHP operatörü, geçiş başvuru anlamına gelir. Burada bir örnek:
$b=2;
$a=$b;
$a=3;
print $a;
print $b;
// output is 32
$b=2;
$a=&$b; // note the & operator
$a=3;
print $a;
print $b;
// output is 33
Biz kullanılan ve yukarıdaki kodda, çünkü Operatör, $ b işaret nerede bir referans $ a saklanır. Yani $ a $ b aslında bir göstericidir.
PHP, argümanlar varsayılan (C esinlenerek) göre değer geçirilir. Eğer değerleri geçirdiğinizde, bir işlevi çağırırken Yani, onlar referans değerine göre kopyalanır. Bu çoğu durumda varsayılan. Ancak bir işlevi tanımlarken, başvuru davranış ile geçmek için bir yol var. Örnek:
function plus_by_reference( &$param ) {
// what ever you do, will affect the actual parameter outside the function
$param++;
}
$a=2;
plus_by_reference( $a );
echo $a;
// output is 3
Bu gibi davranmaya birçok yerleşik işlevleri vardır. Bir diziyi sıralar sort () fonksiyonu dizinin doğrudan etkileyecek ve başka sıralı dizi dönmeyecek gibi.
Ama ilginçtir bir şey var. Pass-by-value modu daha fazla bellek kullanımına neden olabilir, ve PHP kod daha hızlı çalışmasını sağlamak ve bellek kullanımını en aza indirmek için bir dil (yani PHP ile yazılmış programlar kadar hızlı derlenmiş programları gibi değildir), çünkü, bazı tweaks vardır PHP yorumlayıcı. Bir tembel-copy (I adından emin değilim) 'dir. Hangi Bunun anlamı:
Eğer başka bir değişken başa zaman, PHP, ikinci değişkene birinci değişkenin bir başvuru kopyalamak olacaktır. Bu yüzden yeni değişken, aslında şimdiye kadar ilki için bir referanstır. Değeri henüz kopyalanmaz. Eğer bu değişkenlerden herhangi birini değiştirmek için çalışırsanız Ama, PHP değerinin bir kopyasını yapmak ve daha sonra değişken değiştirir olacaktır. SİZ DEĞER değiştirmek istemiyorsanız Bu şekilde, bellek ve zaman kazanmak için fırsat olacaktır.
Yani:
$b=3;
$a=$b;
// $a points to $b, equals to $a=&$b
$b=4;
// now PHP will copy 3 into $a, and places 4 into $b
Eğer nesne 'entryid' mülk haline $ entryid değerini yerleştirmek istiyorsanız, tüm bu sonra, yukarıdaki kodu bu yapacak, ve bunlardan herhangi değiştirene kadar az bellekte, sonuçları entryid değerini kopyalamak değil kullanımı. Aslında ikisini aynı değere işaret etmek istiyorsanız, o zaman bu kullanın:
$this->entryId=&$entryId;
Diğerleri dedi Hayır, "PHP hiçbir Pointer yoktur." ve ben PHP RAM_related şey yok, ekleyin.
Ve ayrıca tüm cevaplar açıktır. Ama karşı olamayacağını bırakılmak noktalar vardı!
İlk başta ben PHP "eval" adında bir yapı vardır bilerek, gerçekten güçlü bir dil olduğunu söylemek zorundayım, bu yüzden çalışırken size PHP kodu oluşturabilirsiniz! (Gerçekten harika!)
çok daha yıkıcı olduğunu SQL_Injection olan PHP_Injection tehlikesi olmasına rağmen. Dikkat!
Örnek:
Code:
$a='echo "Dünya Merhaba.";';
eval ($a);
Output
Dünya Merhaba.
Yani yerine başka bir değişken gibi hareket için bir işaretçi kullanarak, You Can Make A Variable From Scratch strong>!
$GLOBAL değişkeni Bunu tuşlarını kullanarak tüm değişkenleri erişebilir, oldukça yararlıdır.
Örnek:
Code:
$three="Hello";$variable=" Amazing ";$names="World";
$arr = Array("three","variable","names");
foreach($arr as $VariableName)
echo $GLOBALS[$VariableName];
Output
Merhaba Amazing World
Note: Diğer superglobals daha küçük ölçeklerde aynı hile yapabilirsiniz.
Eğer bir değişken önce istiyorum '$' ın olarak ne yaptığınızı biliyorsanız, kadar ekleyebilirsiniz.
Örnek:
Code:
$a="b";
$b="c";
$c="d";
$d="e";
$e="f";
echo $a."-";
echo $$a."-"; //Same as $b
echo $$$a."-"; //Same as $$b or $c
echo $$$$a."-"; //Same as $$$b or $$c or $d
echo $$$$$a; //Same as $$$$b or $$$c or $$d or $e
Output
b-c-d-e-f
Referans işaretçiler çok yakın, ama this link Daha fazla açıklama için kontrol etmek isteyebilirsiniz.
Örnek 1:
Code:
$a="Hello";
$b=&$a;
$b="yello";
echo $a;
Output
yello
Örnek 2:
Code:
function junk(&$tion)
{$GLOBALS['a'] = &$tion;}
$a="-Merhaba Dünya<br>";
$b="You-To Yanısıra";
echo $a;
junk($b);
echo $a;
Output
-Merhaba Dünya
You-To Yanısıra
Bu yardımcı olur umarım.
PHP işaretçileri gibi bir şey kullanabilirsiniz:
$y=array(&$x);
Şimdi $ y $ x ve $ y [0] bir işaretçi dereferences bir işaretçi gibi davranır.
Değeri dizi (& $ x) sadece bir değerdir, bu yüzden bile bu işaretçi değişkeni bir işaretçi oluşturmak diğer değişkenler, vb kopyalanan diğer dizilerde saklanır fonksiyonları, geçirilebilir. (Ancak, işaretçi kıracak Dizgeleştirme.)