Hercles Posted March 10, 2014 at 11:17 AM Report #548042 Posted March 10, 2014 at 11:17 AM O que ocorre ao se declarar um método como static (orientado a objeto)? E uma propriedade ? Você teria um exemplo desta utilidade algum código em PHP.
HappyHippyHippo Posted March 10, 2014 at 11:31 AM Report #548046 Posted March 10, 2014 at 11:31 AM (edited) um caso simples : class DBConnect { static protected $singleton = null; static public singleton() { if (self::$singleton == null) self::$singleton = new DBConnect(); return self::$singleton; } protected function __construct() { echo "creating DB connection ..."; // create db connection // ... } public function doStuff() { echo "doing stuff ..."; } } $db = DBConnect::singleton(); // echo : "creating DB connection ..." $db->doStuff(); // echo : "doing stuff ..." $db = DBConnect::singleton(); // echo : "" // só uma instância da classe de ligação à base de dados $db->doStuff(); // echo : "doing stuff ..." ------------ exit : alterado o nível de acesso do método singleton para public ... óbvio ... Edited March 11, 2014 at 09:48 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Hercles Posted March 11, 2014 at 12:02 AM Author Report #548155 Posted March 11, 2014 at 12:02 AM o que é o método static (orientado a objeto)?
fil79 Posted March 11, 2014 at 10:44 AM Report #548179 Posted March 11, 2014 at 10:44 AM http://pt2.php.net/manual/en/language.oop5.static.php MCITP-MCTS-MCP
Devexz Posted March 11, 2014 at 09:41 PM Report #548286 Posted March 11, 2014 at 09:41 PM (edited) o que é o método static (orientado a objeto)? um caso simples : class DBConnect { static protected $singleton = null; static protected singleton() { if (self::$singleton == null) self::$singleton = new DBConnect(); return self::$singleton; } protected function __construct() { echo "creating DB connection ..."; // create db connection // ... } public function doStuff() { echo "doing stuff ..."; } } $db = DBConnect::singleton(); // echo : "creating DB connection ..." $db->doStuff(); // echo : "doing stuff ..." $db = DBConnect::singleton(); // echo : "" // só uma instância da classe de ligação à base de dados $db->doStuff(); // echo : "doing stuff ..." Já viste o que o @hippo disse? Edited March 11, 2014 at 09:42 PM by Devexz Contador de calorias: caloriaspordia.com
taviroquai Posted March 11, 2014 at 11:38 PM Report #548305 Posted March 11, 2014 at 11:38 PM Parece-me óbvio depois da resposta do Happy que ele não percebeu o conceito... Hercles, (ou querias dizer Hércules?!), em programação orientada aos objetos tens conceitos fundamentais de Classe, método e instância. Vou ser um pouco radical e dizer que em POO nem deviam existir métodos estáticos; isto para dizer que num contexto estático, não tens acesso ás variaveis e métodos da instância, que são fundamentais em POO. Por exemplo, se fizeres uma aplicação apenas com recurso a classes e métodos estáticos, não estás a tirar total proveito da POO. Fui claro? 🙂
HappyHippyHippo Posted March 12, 2014 at 12:02 AM Report #548312 Posted March 12, 2014 at 12:02 AM Vou ser um pouco radical e dizer que em POO nem deviam existir métodos estáticos cuidado com afirmações como essas. querem um exemplo mais do que claro na linguagem (provavelmente) mais POO que existe ? class MyClass { public static void main(String[] args) { } } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
taviroquai Posted March 12, 2014 at 12:16 AM Report #548314 Posted March 12, 2014 at 12:16 AM @Happy eu avisei que ia dizer algo radical... de qualquer forma, normalmente chamar o método main serve apenas de "contentor" para colocar instrucoes de inicialização que como disse, nem tem acesso a variaveis e métodos de instância...
Hercles Posted March 12, 2014 at 12:21 AM Author Report #548317 Posted March 12, 2014 at 12:21 AM entendi.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now