Jump to content

Recommended Posts

Posted (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 by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Posted (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 by Devexz

Contador de calorias: caloriaspordia.com

Posted

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? 🙂

Posted

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
Posted

@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...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.