Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Como que eu faço para as variaveis serem importadas para a class ?
$dbhost = "localhost"; $dbname = "bancoxyz"; $dbuser = "root"; $dbpwd = "root"; $dbpref = "xyz_";class DBManager{ public $dados = array ('servidor' => $dbhost, 'usuario' => $dbuser, 'senha' => $dbpwd, 'bd' => $dbname, 'prefixo' => $dbpref );}
abrçs
Você pode passar como parâmetro quando instanciar a classe, e a função construtora adiciona os valores nas váriaves...outro jeito pode ser com Global...global $dbhost;$dbhost = "localhost";ai depois só buscar em alguma função da sua classe, mas usar isso não é muito recomendável..
é q eu não posso coloca dentro da class pois uso em outros lugares...tinha q ser algo tipo o global, tem uma forma recomendavel?!
>
opa... tente usar assim:
class DbManager{ var $dbUser = "root"; var $dbPass = "123"; var $dbName = "meuBD"; var $dbHost = "localhost"; function setDbParamssetDbParams($dbuser="", $dbpass="", $dbname="", $dbhost=""){ $this->dbUser = $dbuser; $this->dbPass = $dbpass; $this->dbName = $dbname; $this->dbHost = $dbhost; } function connect(){ $con = @mysql_connect($this->dbHost, $this->dbUser, $this->dbPass); if($con){ $check = @mysql_select_db($this->dbName,$con); if($check) return $con; else return NULL; } else return NULL; } function execQuery($query){ $con = DbManager::connect();$res = mysql_query($query,$con) or die ('<h1>Configuração de Banco de Dados Errada!</h1><br />Erro!, veja: ' . mysql_error()); //$res = mysql_query($query,$con) or die(mysql_error()); @mysql_close($con); if ($res) return $res; else return NULL; } function execInsert($query){ $id = NULL; $con = DbManager::connect(); $check = @mysql_query($query,$con); if ($check) $id = @mysql_insert_id($con); @mysql_close($con); return $id; } function execUpdate($query){ $con = DbManager::connect(); $check = @mysql_query($query,$con); @mysql_close($con); return $check; } function checkExists($query){ $res = DbManager::execQuery($query); $rows = mysql_num_rows($res); @mysql_free_result($res); if($rows != 0) return true; else return false; } function res2array($res){ $info = array(); $i = 0; while($data = mysql_fetch_array($res, MYSQL_ASSOC)){ while(list($key,$value)=each($data)) $info[$i][$key] = $value; $i++; } @mysql_free_result($res); return $info; }}?>você poderia usar assim:
$varclass Xyz {global $var;}
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Então cara desse jeito não rola o Global, ele teria que estar dentro de uma função, fora da erro!ficaria +/- isso o que quis dizer antes:$dbhost = "localhost"; $dbname = "bancoxyz"; $dbuser = "root"; $dbpwd = "root"; $dbpref = "xyz_";class DBManager{ public $dados = array ('servidor', 'usuario', 'senha', 'bd', 'prefixo' ); function DBManager($servidor,$usuario,$senha,$bd,$prefixo){ $this->dados['servidor'] = $servidor; }}$db= new DBManager($dbhost,$dbname,$dbuser,$dbpwd,$dbpref);não é possivel q nao consiga joga uma variavel externa pra dentro de uma class... q me*** :D
Você pode usar uma interface, setando uma constante dentro dela, assim todas as classes que implementarem a interface terão acesso direto a esta constante, e você pode continuar usando o valor fora de uma classe. Olhe o exemplo abaixo:
<?phpinterface ITeste { const teste = "Ola";}class Teste implements ITeste { public function mostrar() { echo self::teste." de dentro da classe Teste!\n"; }}$obj = new Teste();$obj->mostrar();echo ITeste::teste." de fora da classe Teste!";?>
Repare que quando se declara uma constante em Classes/Interfaces você não utiliza o cifrão ($) na frente do nome dela...
Creio que isso resolva o seu problema..
Falou!
>
>
opa... tente usar assim:
class DbManager{ var $dbUser = "root"; var $dbPass = "123"; var $dbName = "meuBD"; var $dbHost = "localhost"; function setDbParamssetDbParams($dbuser="", $dbpass="", $dbname="", $dbhost=""){ $this->dbUser = $dbuser; $this->dbPass = $dbpass; $this->dbName = $dbname; $this->dbHost = $dbhost; } function connect(){ $con = @mysql_connect($this->dbHost, $this->dbUser, $this->dbPass); if($con){ $check = @mysql_select_db($this->dbName,$con); if($check) return $con; else return NULL; } else return NULL; } function execQuery($query){ $con = DbManager::connect();$res = mysql_query($query,$con) or die ('<h1>Configuração de Banco de Dados Errada!</h1><br />Erro!, veja: ' . mysql_error()); //$res = mysql_query($query,$con) or die(mysql_error()); @mysql_close($con); if ($res) return $res; else return NULL; } function execInsert($query){ $id = NULL; $con = DbManager::connect(); $check = @mysql_query($query,$con); if ($check) $id = @mysql_insert_id($con); @mysql_close($con); return $id; } function execUpdate($query){ $con = DbManager::connect(); $check = @mysql_query($query,$con); @mysql_close($con); return $check; } function checkExists($query){ $res = DbManager::execQuery($query); $rows = mysql_num_rows($res); @mysql_free_result($res); if($rows != 0) return true; else return false; } function res2array($res){ $info = array(); $i = 0; while($data = mysql_fetch_array($res, MYSQL_ASSOC)){ while(list($key,$value)=each($data)) $info[$i][$key] = $value; $i++; } @mysql_free_result($res); return $info; }}?>você poderia usar assim:
$varclass Xyz {global $var;}
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
Então cara desse jeito não rola o Global, ele teria que estar dentro de uma função, fora da erro!ficaria +/- isso o que quis dizer antes:$dbhost = "localhost"; $dbname = "bancoxyz"; $dbuser = "root"; $dbpwd = "root"; $dbpref = "xyz_";class DBManager{ public $dados = array ('servidor', 'usuario', 'senha', 'bd', 'prefixo' ); function DBManager($servidor,$usuario,$senha,$bd,$prefixo){ $this->dados['servidor'] = $servidor; }}$db= new DBManager($dbhost,$dbname,$dbuser,$dbpwd,$dbpref);
opa.. é verdade não tinha visto isso passou batido..rsoh eu postei um script usando o Global...http://forum.imasters.com.br/index.php?s=&...st&p=754734depois da uma olhadinha.. e valew pela observação.. :lol:
Você realmente precisa que esses dados estejam nas proprieades da classe? Por que não define constantes com a função define()? Dessa forma é possível usá-las dentro e fora das classes. Além disso, essas informações são, deveras, constantes, não variáveis. ;)
Abraços,
Beraldo
boa Beraldo.. legal sua solução....... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif
opa... tente usar assim:
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif