Bu soru için her yere baktım ama cevap alamadım. Başka bir sınıfta başka bir sınıf fonksiyonunu aramaya çalışıyorum. Amacım, iletileri işleyen global bir sınıfa sahip olmak. Diğer sınıfların içine mesaj ekleyebilmek istiyorum. Bu benim çalıştığım örneğim.Başka Sınıfta Başka Sınıf Fonksiyonu Aranıyor
class Company {
var $name;
public function setName($string) {
$this->name.= $string;
// TESTING HERE
Site::setMessage("Company Set: " .$string);
}
}
class Site {
var $message;
public function setMessage($string) {
$this->message .= $string;
}
public function outputMessage($string) {
echo $this->message;
}
}
Ve diğer sınıf Sonra ben ": Şirket X Başlangıç Firma Set" söylemek benim ekranını almaya çalışıyorum benim ana sayfa
$Site = new Site();
$Site->addMessage("Start");
$Company = new Company();
$Company->addName('Company X');
$Site->outputMessage();
var. Böylece site, herhangi bir sınıfın depolaması gereken iletileri saklayabilir.
Bu işlevi, herhangi bir şans olmaksızın statik olana döndürmeyi denedim. Ne denediğim önemli değil, bir çeşit hata alıyorum. Örnek için
:
Ölümcül hata: bildirilmemiş statik özelliğine Erişim: Şirket :: $ name
Ölümcül hata: $ kullanmak, bu değilken nesne bağlamında
kimse doğru yönde işaret edebilir ?
class Site {
private static $instance = new Site();
public static getInstance() {
return Site::$instance;
}
private $message;
private function __construct() {
}
public function addMessage($message) {
$this->message .= $message;
}
public static function addNewMessage($message) {
$instance->addMessage($message);
}
}
Şimdi Site::addNewMessage('...')
kullanın veya Site::getInstance()
aracılığıyla Site
örneğini erişebilir: Bu desen benim çekinceleri olmasına rağmen
Her şeyden önce - Site' sınıfında 'addMessage' yöntemi yoktur. Şirket içinde "addName" olarak. İkincisi - statik olarak adlandırılan yöntem olarak - bu yoktur, bu "0", –
Başka bir sınıftan bir yöntem aramak istiyorsanız, bu sınıfı eklemeyi denemeden önce eklemeniz gerekir. Ve ayrıca aradığınız yöntemin "public" olduğundan emin olun. – aphextwix
Özür dileriz, bu setMessage olduğunu varsayalım. Soruyu doğru işlevi gösterecek şekilde düzenledim. SetCompany'i statik bir işleve değiştirmeyi ve Adres :: company = $ string kullanmayı denedim; Ancak başka bir hata alıyorum: Önemli hata: Bildirilmemiş statik özelliğe erişim: Şirket :: $ name. Ayrıca, şu anda bu sınıflar aynı dosyadadır. Hiçbir şey eklemem gerektiğini sanmıyorum. – user1860996