| Autor | Zpráva | ||
|---|---|---|---|
| gardener Profil |
#1 · Zasláno: 4. 1. 2010, 16:59:22
Zdravím, potřebuji nastavit v jednom konfiguračním souboru odlišné údaje pro připojení k MySQL db.
Problém je ten, že jsou v konfiguráku pře definicí proměnné uvedeno klíčové slovo var. Pokud zapíši: class JConfig {
if ($_SERVER["SERVER_ADDR"]=="127.0.0.1")
{
$host = 'localhost';
$user = 'root';
$db = 'shop';
$password = '';
}
else
{
$host = 'localhost';
$user = 'root';
$db = 'shop';
$password = '';
}
var $offline = '0';
var $editor = 'tinymce';
var $list_limit = '20';
}Hlásí mi PHP chybu " unexpected T_IF, expecting T_FUNCTION", přitom ale podmínka je zapsána správně. Tuší někdo, v čem by mohl být problém? Díky za každou radu. |
||
| fuckin Profil |
#2 · Zasláno: 4. 1. 2010, 17:27:01 · Upravil/a: fuckin
Trida sdruzuje metody, nikoly samostatny kod. Proto tento kod treba dej do konstruktoru.
V php 4 se pouziva pro deklaraci var. V php 5 se pouziva misto var urceni viditelnosti, tedy napr public,private... |
||
| gardener Profil |
#3 · Zasláno: 4. 1. 2010, 20:35:15 · Upravil/a: gardener
To jsem úplně zapoměl, díky za radu, každopádně, pokud to zapíši do konstruktoru. nemohu stále použít klíčové slovo var, které asi bude nakonec potřeba.
Viz: function __construct() {
if ($_SERVER["SERVER_ADDR"]=="127.0.0.1")
{
$host = 'localhost';
$user = 'root';
$db = 'shop';
$password = 'password';
}
else
{
$host = 'localhost';
$user = 'root';
$db = 'shop';
$password = '';
}
} |
||
| AM_ Profil |
#4 · Zasláno: 4. 1. 2010, 23:15:34
zapisuje se to takhle:
class a{
function a(){
//kod
}
var $b;
var $c;
}ale: - je zvykem psát spíš nejdřív atributy (členské proměnné) a až pak metody - pokud vím, tak klíčové slovo var není (alespoň v PHP5, OOP PHP4 jsem nikdy nezkoumal) potřeba |
||
| fuckin Profil |
#5 · Zasláno: 5. 1. 2010, 20:05:54
AM:
„zapisuje se to takhle:“ „OOP PHP4 jsem nikdy nezkoumal“ Tak proč používáš zápis konstruktoru z php4? V php 5 se již dá využít slova __construct() „- pokud vím, tak klíčové slovo var není (alespoň v PHP5, OOP PHP4 jsem nikdy nezkoumal) potřeba“ Ne není potřeba, spíše je lepší se mu úplně vyhnout. V php 5 se var vyhodnocuje jako proměnná s viditelností public. Proto ekvivalent je public $promenna; Proměnná, která není uvedena v této deklaraci má automaticky viditelnost public. To samé platí u metod. To samé platí u metod. Dobrý programátor určí i viditelnost metody. Tedy upraveno dle mého názoru do lepší formy. class a{
public function __construct(){
//kod
}
public $b;
public $c;
}gardener: Tedy gardenerův kód upraven bude vypadat takto.
<?
class a
{
private $host;
private $user;
private $db;
private $password;
public function __construct()
{
if ($_SERVER["SERVER_ADDR"] == "127.0.0.1") {
$host = 'localhost';
$user = 'root';
$db = 'shop';
$password = 'password';
} else {
$host = 'localhost';
$user = 'root';
$db = 'shop';
$password = '';
}
}
}
}
V php 4 není podpora pro __construct() a misto public,private... pouzij var u proměnných. |
||
| AM_ Profil |
#6 · Zasláno: 5. 1. 2010, 20:28:15
fuckin:
„Tak proč používáš zápis konstruktoru z php4? V php 5 se již dá využít slova __construct()“ čistě má nepozornost, neměl to být konstruktor ale libovolná funkce, nedošlo mi, že "a" jsem pojmenoval už třídu :) konstruktory rád píšu jako __construct() a docela mi to v jiných jazycích chybí, protože když se člověk rozhodne třídu v takovém jazyce přejmenovat, musí přejmenovávat i konstruktor (nebo na to zapomene a vznikne blbě hledatelná chyba). |
||
| fuckin Profil |
#7 · Zasláno: 5. 1. 2010, 20:30:33 · Upravil/a: fuckin
AM:
Svatá pravda. Chudáku, djpw nerespektuje tvé podtržítko na konci :-) |
||
| AM_ Profil |
#8 · Zasláno: 5. 1. 2010, 20:47:07
fuckin:
„Chudáku, djpw nerespektuje tvé podtržítko na konci :-)“ spíš je to možná funkce založená díky mě :) má přezdívka je AM, jenže djpw chce alespoň 3 znaky, a Alphard tu jednou řešil, jestli se to sloňuje "bez AM_a" nebo "bez AMa" :) omlouvám se za offtopic. |
||
| t4nn3r Profil * |
#9 · Zasláno: 5. 1. 2010, 22:07:30
Jako osobne se priklanim k zapisu [#5] fuckin. Nesporna vyhoda deklarace promennych pomoci public,private,protected. Da se tady vyuzivat dedicnost a navic u kazde promenne je hned jasne co je zac (staci se mrknout na zacatek tridy ..)
|
||
| gardener Profil |
#10 · Zasláno: 7. 1. 2010, 21:47:04
Nemohu si pomoci, ale pokud zapisi takto>>
var $host; var $user; var $db; var $password;
function __construct() {
if ($_SERVER["SERVER_ADDR"]=="127.0.0.1")
{
$host = 'localhost';
$user = 'root';
$db = 'bekera_shop';
$password = 'password';
}
else
{
$host = 'localhost';
$user = 'root';
$db = 'bekera_shop';
$password = 'password';
}Nemohu pristoupit ani k jedne z prmennych, takze se do DB nepripojim. |
||
| Majkl578 Profil |
#11 · Zasláno: 7. 1. 2010, 21:58:25
Pro přístup k členským proměnným objektu se používá proměnná obsahující instanci a šipka.
V metodě objektu tedy takto: $this->host = 'localhost'; Atd. |
||
| gardener Profil |
#12 · Zasláno: 7. 1. 2010, 22:02:33
To jsem jiz zkousel, viz>>
this->host = 'localhost'; this->user = 'root'; this->db = 'bekera_shop'; this->password = 'password'; Ale kompilator mi to nevzal. |
||
| gardener Profil |
#13 · Zasláno: 7. 1. 2010, 22:04:19
Pardon, moje chyba..nepouzival jsem znak promenne.
|
||
| AM_ Profil |
#14 · Zasláno: 7. 1. 2010, 22:36:06
Přesně tak. Navíc jak jsme zmínili, var dělá spíš zmatek než užitek, dej si tam raději "private". Zkusil bych někde nastudovat něco o PHP5 OOP a neokoukávat to ze zastaralých skriptů, to tě kvalitní kód psát nenaučí.
|
||
|
Časová prodleva: 16 let
|
|||
0