Articles of static methods

Função estática PHP sendo chamada em ambiente dynamic

Como o PHP permite chamar a function estática como uma function dinâmica? Estou usando php 5.3.2 class weird{ public static function iamstatic($calledFrom){ echo “I am a static function called with a $calledFrom operator\n”; } public function test(){ self::iamstatic(“static”); $this->iamstatic(“dynamic”); } } $c = new weird(); $c->test(); weird::iamstatic(“Static outside class”); $c->iamstatic(“Dynamic outside class”); Esta saída: I […]

Erro fatal ao chamar método estático

Então, aqui está a minha situação: Estou usando CodeIgniter Eu configurei um helper, (‘string_helper’ na pasta ‘DK’) Eu configurei a class dkString em dk / string_helper.php static function strInArray($str,$arr) { foreach ($arr as $item) { if (self::inString($str,$item)) return true; } return false; } No meu controlador: Estou carregando o helper ( $this->load->helper(‘dk/string’); ) Chamando o […]

Não é possível acessar o Super Globals Inside __callStatic?

O código a seguir falha na minha instalação do PHP 5.3.6-13ubuntu3.2 que me faz pensar por que não posso acessar o $ _SERVER Super Global dentro desse método. <?php header('Content-Type: text/plain'); $method = '_SERVER'; var_dump($$method); // Works fine class i { public static function __callStatic($method, $args) { $method = '_SERVER'; var_dump($$method); // Notice: Undefined variable: […]

Encontre o nome da class da function de chamada em php

Digamos que eu tenho: class Zebra{ public static function action(){ print ‘I was called from the ‘.get_class().’ class’; // How do I get water here? } } class Water{ public static function drink(){ Zebra::action(); } } Water::drink(); Como faço para obter “água” da class zebra? (Isto é para php 5.3)

Método estático de obter – é esta prática ruim?

Tivemos uma discussão com um colega sobre isso, isto é má prática ou não. Agora não consigo encontrar exemplos imediatos deste online. Nós temos muitos mapeadores de objects de database e chamamos suas funções assim (exemplo) – o método setId é a linha do database e configura-o para propriedades pré-definidas class Person { public static […]

Desempenho do Método da Instância da Classe Singleton versus Método da Classe estática em PHP?

Estou interessado em análise objetiva de qual é mais performant; methods de instância de chamada de uma class singleton ou methods de uma class estática. Eu já vi isso, então não estou procurando uma discussão sobre a diferença entre os dois ou uma discussão sobre qual é “melhor”. Só estou interessado no desempenho relativo entre […]

Usando o real_escape_string do MySQLi como uma function estática

Estou me perguntando se eu poderia escaping de strings (usando real_escape_string) sem primeiro criar uma instância de object para aplicar a function? ou seja, podemos fazer isso: $database = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME); $database->real_escape_string($query); $database->query($query) etc. No entanto, o que estou tentando fazer pela consistência no meu aplicativo é ter uma class de database principalmente estática, que […]

PHP: chamar para um método de instância através da syntax do método ClassName ::, resulta em uma chamada estática?

Ela é o meu código: class MyClass { public $prop; public function method () { echo $this->prop; } } Em algum lugar do código, acidentalmente: MyClass::method(); Eu esperaria ter um erro de interpretação sobre a linha acima, porque o método chamado não é estático. Em vez disso, o método foi chamado, e recebi uma exceção […]

Instanciamento de class “Inline” em PHP? (For Ease of Method Chaining)

Um idioma comumente usado em linguagens OO como Python e Ruby é instanciar um object e methods de encadeamento que retornam uma referência ao próprio object, como: s = User.new.login.get_db_data.get_session_data Em PHP, é possível replicar esse comportamento assim: $u = new User(); $s = $u->login()->get_db_data()->get_session_data(); Tentando os seguintes resultados no syntax error, unexpected T_OBJECT_OPERATOR : […]

PHP: se eu chamar um método estático de maneira não estática

Eu não sou profissional na programação orientada a objects e recebi uma pergunta tola: class test { public static function doSomething($arg) { $foo = ‘I ate your ‘ . $arg; return $foo; } } Então, a maneira correta de chamar o método doSomething() é test::doSomething(‘Pizza’); , Estou certo? Agora, o que acontecerá se eu chamar […]