Ответ 1
Вот правило:
Статический метод может использоваться как для статического метода, так и для нестатического метода.
Нестатический метод может использоваться только в нестационарном методе.
ok У меня есть этот код, который я изучаю
class scope{
function printme(){
return "hello";
}
public static function printme(){
return "hello";
}
}
$s = new scope();
echo $s->printme(); //non-static call
echo "<br>";
echo scope::printme(); //static call
Теперь это не действительно код моего проекта, но это то, что я хочу сделать
Поскольку у нестатической функции есть много операций над ней, мне также нужно вызвать ее как статическую функцию, так что мне не нужно будет создавать экземпляр класса. Это возможно? или мне действительно нужно переписать функцию на другую функцию или класс?
ПРИМЕЧАНИЕ: скажите мне, если я уже делаю плохое программирование.
Вот правило:
Статический метод может использоваться как для статического метода, так и для нестатического метода.
Нестатический метод может использоваться только в нестационарном методе.
Если экземпляр вашего класса редко необходим, вы можете создать статический метод для создания экземпляра, вызвать нестатический метод и вернуть значение.
class Scope {
public function mynonstatic() {
}
public static function mystatic() {
$s = new Scope();
return $s->mynonstatic();
}
}
Помните, что статический метод - это просто глобальная функция с уменьшенной областью. Они полезны, но не должны создаваться без уважительной причины.
Поскольку у нестатической функции есть много операций над ней, мне также нужно назовите его как статическую функцию, так что мне не нужно будет создавать экземпляр класс. Это возможно? или мне действительно нужно было переписать функция к другой функции или классу?
Если вам это необходимо, статично, сделайте его статическим. Если вам это не нужно, держите его так, как есть. Внутри нестатической функции можно вызвать статическую функцию.
class Foo
{
public function bar()
{
Foo::zex();
// or self::zex() or even $this->zex();
}
public static function zex()
{
}
}
$foo = new Foo;
$foo->bar();
Ant наоборот.
class Foo
{
public function bar()
{
}
public static function zex()
{
$foo = new Foo;
$foo->bar();
}
}
Когда вы должны это сделать или вы должны это сделать, это еще один вопрос. Наиболее частое использование последнего - это, вероятно, шаблон Singleton.