Hercles Posted March 10, 2014 Report Share Posted March 10, 2014 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. Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 10, 2014 Report Share Posted March 10, 2014 (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 by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Hercles Posted March 11, 2014 Author Report Share Posted March 11, 2014 o que é o método static (orientado a objeto)? Link to comment Share on other sites More sharing options...
fil79 Posted March 11, 2014 Report Share Posted March 11, 2014 http://pt2.php.net/manual/en/language.oop5.static.php MCITP-MCTS-MCP Link to comment Share on other sites More sharing options...
Devexz Posted March 11, 2014 Report Share Posted March 11, 2014 (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 by Devexz Contador de calorias: caloriaspordia.com Link to comment Share on other sites More sharing options...
taviroquai Posted March 11, 2014 Report Share Posted March 11, 2014 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? 🙂 Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted March 12, 2014 Report Share Posted March 12, 2014 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 Link to comment Share on other sites More sharing options...
taviroquai Posted March 12, 2014 Report Share Posted March 12, 2014 @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... Link to comment Share on other sites More sharing options...
Hercles Posted March 12, 2014 Author Report Share Posted March 12, 2014 entendi. Link to comment Share on other sites More sharing options...
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