Добавить AddType application/x-httpd-php .php
в файл httpd.conf, если вы используете Apache 2.4
Чтобы любой код в статическом или нестационарном классе вызывал нестатический метод, вызывающий должен иметь ссылку на объект, на который выполнен вызов.
В вашем case, Bar
's MethodCaller
должен иметь ссылку на Foo
. Вы можете передать его в конструкторе Bar
или любым другим способом, который вам нравится:
class Foo
{
Bar b1 = new Bar(this);
public object MethodToCall(){ /*Method body here*/ }
}
Class Bar
{
private readonly Foo foo;
public Bar(Foo foo) {
// Save a reference to Foo so that we could use it later
this.foo = foo;
}
public void MethodCaller()
{
// Now that we have a reference to Foo, we can use it to make a call
foo.MethodToCall();
}
}
Передача экземпляра конструктору:
class Bar
{
private Foo foo;
public Bar(Foo foo)
{
_foo = foo;
}
public void MethodCaller()
{
_foo.MethodToCall();
}
}
Использование:
Foo foo = new Foo();
Bar bar = new Bar(foo);
bar.MethodCaller();
Попробуйте следующее:
class Foo
{
public Foo() { /*Constructor here*/ }
Bar b1 = new Bar();
public object MethodToCall(){ /*Method body here*/ }
}
Class Bar
{
public Bar() { /*Constructor here*/ }
Foo f1 = new Foo();
public void MethodCaller()
{
f1.MethodToCall();
}
}
class Bar
{
/*...*/
public void MethodCaller()
{
var x = new Foo();
object y = x.MethodToCall();
}
}
Кстати, объекты вообще не имеют имен.
x
будет иметь новый набор переменных. Кроме того, im new с терминологией, и я хочу сказать reference / identifier вместо имени: P
– DarkDestry
15 December 2014 в 16:38