Ben burada değiştirmek istiyorum şeylerin bir çift, ben bir an anlatacağım.
A.php
<?php
error_reporting(E_ALL);
ini_set("display_errors",1);
class myClass
{
// Here, access modifier.
public function hello()
{
return 'hello';
}
}
?>
B.php
<?php
error_reporting(E_ALL);
ini_set("display_errors",1);
require_once('/A.php');
testing();
function testing()
{
// Here, change where variable is defined to place it in scope.
$a = new myClass();
echo $a ->hello();
}
?>
hiçbir erişim belirleyici bir yöntem verilmiştir, bu varsayılan public. Ancak, sadece yöntem olmasını istediklerini bildirmek için genellikle daha iyidir. Eğer her bir farklı bir varsayılan olacak gibi kendinizi aktif birden fazla dilde kodlama bulursanız bu takdir edecektir.
Şu anda değişken $a fonksiyon testleri () kapsamında değildir. Bana programını yeniden düzenlemek için izin ve neden göreceğiz. Bunu gibi, bunu yazdım olabilir:
B.php
<?php
function testing()
{
echo $a ->hello();
}
error_reporting(E_ALL);
ini_set("display_errors",1);
require_once('/A.php');
$a = new myClass();
testing();
?>
Bu testing() hemen $a yok, tanımlandığı gibi olduğu, bkz. Henüz tanımlı değil. Yani testing() 'nin kapsamı içinde değildir. Sen $a testing() içinde tanımlamak veya başka bir parametre olarak geçmek ya var olacak. Benim ilk geçişte, ben $a içeride testing() tanımlamak için kodunuzu değişti. Birden fonksiyonları kullanmak gerekiyorsa, o zaman testing() parametre olarak almak değişen öneririm. Bu gibi:
function testing(myClass $a) {
echo $a->hello();
}
Sonra bu şekilde geçmek:
$a = new myClass();
testing($a);