Hirdetés

2024. május 4., szombat

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)

Hozzászólások

(#10151) papa019 válasza fordfairlane (#10150) üzenetére


papa019
senior tag

Javítottam, de így is hibát ír:
Problem with Query: INSERT INTO category_parent (did,parent) VALUES(\'1\',\'34\')

De a categories táblába továbbra is bekerülnek az adatok.

Szerk: aposztróf nélkül is ugyanaz a hiba.

[ Szerkesztve ]

(#10152) ArchElf válasza papa019 (#10151) üzenetére


ArchElf
addikt

1) Vsz numerikusmezőket nem kell aposztrofolni.
$DB->Query("INSERT INTO category_parent(did,parent) VALUES($result,$category)");
2) Tessék prepared statementeket használni!

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#10153) Sk8erPeter válasza papa019 (#10149) üzenetére


Sk8erPeter
nagyúr

$result = mysql_query("SELECT id FROM categories WHERE name='$name'");
$DB->Query("INSERT INTO category_parent(did,parent) VALUES('$result','$category')");

mysql_query() :
"For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a (I)resource(/I) on success, or FALSE on error."

Te ezt az erőforrásazonosítót adod át közvetlenül.
Próbáld így:

$result = mysql_query("SELECT id FROM categories WHERE name='$name'");
$row = mysql_fetch_object($result);
$DB->Query('INSERT INTO category_parent(did,parent) VALUES('.$row->id.',"'.$category.'")');

Bár eleve a mysql_query()-jellegű függvényhívások meg a query-konkatenálások kerülendőek. Szerencsére már a hivatalos honlapon is írják. :)

========

(#10152) ArchElf : :DDD ez jó, még nem láttam, qrva beteg. :DD

Egyébként a MySQL-nek semmi problémája nincs egy idézőjelbe rakott inttel INSERT-nél, lazán elfogadja, tehát nem az lesz a baj.

[ Szerkesztve ]

Sk8erPeter

(#10154) ArchElf válasza Sk8erPeter (#10153) üzenetére


ArchElf
addikt

Már megontam szajkózni - most csináltam :DDD

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#10155) Sk8erPeter válasza ArchElf (#10154) üzenetére


Sk8erPeter
nagyúr

Hatásos hivatkozási alap lesz a későbbiekre. :DDD

Amúgy szerkesztettem a hsz.-t az aposztrófról, lásd a hsz. végét. :K
"Egyébként a MySQL-nek semmi problémája nincs egy idézőjelbe rakott inttel INSERT-nél, lazán elfogadja, tehát nem az lesz a baj."
De még kiegészíteném:
nemcsak az idézőjelbe, de az aposztrófba rakott INT-tel sincs semmi baja. :D

[ Szerkesztve ]

Sk8erPeter

(#10156) ArchElf válasza Sk8erPeter (#10155) üzenetére


ArchElf
addikt

Ok, csak tipp volt... Persze már rájöttem, hogy a resource id nem tetszett neki :D
Ha össze vannak kötve a táblák (bár miért lennének), akkor lehet, hogy a foreign key constraint fogja meg...

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#10157) fordfairlane válasza papa019 (#10151) üzenetére


fordfairlane
veterán

Azt írtad, hogy a második queryvel van a baj. A második query a $result = mysql_query('SELECT...'). De ezek szerint akkor a harmadikkal van gond.

Szóval elsőre a probléma, hogy a mysql_query('SELECT ...') nem egy értéket, hanem egy ún. "mysql resource"-t ad vissza, amiből még ki kell hámozni magát a mezőértéket, mysql_fetch... kinézetű függvény használatával.

De ha jól értem, akkor a mysql_query-t már lecserélted $DB->Query -re. A harmadik query most így elsőre jónak tűnik. Én is az aposztrófokra tippeltem volna, hogy az okoz galibát, de ezek szerint mégsem. Sajnos a "Problem with Query" hibaüzenet nem túl beszédes.

x gon' give it to ya

(#10158) papa019 válasza Sk8erPeter (#10153) üzenetére


papa019
senior tag

Sajnos így sem működik... :(

A képen az alsó szöveg abban az esetben is ugyanez, ha választok kategóriát.

[ Szerkesztve ]

(#10159) PazsitZ válasza papa019 (#10158) üzenetére


PazsitZ
addikt

Kiváló példa, adott is az sql injection.
A $category változóban lévő "--" karaktersorozat miatt az értelmező a query további részét kommentnek veszi, így az inserted hibás.
Ezért kell vagy önmagában escapelni a megfelelő karaktert, vagy a javasolt pdo megoldást használni.
Plusz, továbbá, amint látom a $result változód ráadásul még üres is és mivel még aposztróf között sincs így ezzel egy újabb szintaktikai hibához értünk.

- http://pazsitz.hu -

(#10160) fordfairlane válasza PazsitZ (#10159) üzenetére


fordfairlane
veterán

Sql injectionről írni egyelőre szerintem felesleges, alapvető dolgokat kéne tisztába tenni. $DB-ben valami adatbáziskezelő objektum van, viszont két query közt sima mysql_query-t próbál használni. Ez félig copy-paste vagy átvett kód lehet. Nehéz lesz így tanácsot adni, mivel ráadásul a kód részben ismeretlen számunkra.

[ Szerkesztve ]

x gon' give it to ya

(#10161) papa019 válasza fordfairlane (#10160) üzenetére


papa019
senior tag

Igen, ez egy minták alapján alakítgatott kód. Próbálok egy használható alkalmazást összerakni és tudom, hogy ez egy hozzáértő számára gányolt kód.

A $DB változóhoz tartozó kód:
$config = array();
$config['host'] = '127.0.0.1';
$config['user'] = 'root';
$config['pass'] = '';
$config['table'] = 'onlab';

class DB
{

/**
* @desc Creates the MySQLi object for usage.
*
* @param $db required connection params.
*/

public function __construct($db) {
$this->mysqli = new mysqli($db['host'], $db['user'], $db['pass'], $db['table']);

if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
}

/**
* @desc Simple preparation to clean the SQL/Setup Result Object.
*
* @param SQL statement
* @return
*/
public function Query($SQL)
{
$this->SQL = $this->mysqli->real_escape_string($SQL);
$this->Result = $this->mysqli->query($SQL);

if ($this->Result == true)
return true;

else
die('Problem with Query: ' . $this->SQL);
}

/**
* @desc Get the results
*
* @param $field Select a single field, or leave blank to select all.
* @return
*/
public function Get($field = NULL)
{
if ($field == NULL)
{
$data = array();

while ($row = $this->Result->fetch_array(MYSQLI_BOTH))
{
$data[] = $row;
}
}
else
{
$row = $this->Result->fetch_array(MYSQLI_BOTH);
$data = $row[$field];
}

/** Make sure to close the Result Set */
$this->Result->close();

return $data;

}

/**
* @desc Automatically close the connection when finished with this object.
*/
public function __destruct()
{
$this->mysqli->close();
}

}

$DB = new DB($config);

(#10162) fordfairlane válasza papa019 (#10161) üzenetére


fordfairlane
veterán

Ez a class DB a mysqli nevű modult használja az adatbázis műveletekhez, így ezzel párhuzamosan nem tudod használni a sima mysql_ kezdetűeket. Nem tudod ezt a class DB-t egyszerűen kihajítani? Hemzseg a hibáktól. Ehhez képest egy sima, osztályt nem használó spagettikód is jobb megoldás.

[ Szerkesztve ]

x gon' give it to ya

(#10163) fordfairlane válasza papa019 (#10161) üzenetére


fordfairlane
veterán

Talán ha a

$result = mysql_query("SELECT id FROM categories WHERE name='$name'");

sort erre cserélnéd, esetleg működne.

$DB->Query("SELECT id FROM categories WHERE name='$name'");
$result = $DB->Get("id");

[ Szerkesztve ]

x gon' give it to ya

(#10164) papa019 válasza fordfairlane (#10163) üzenetére


papa019
senior tag

Tökéletesen működik, köszönöm. :R
Valami ilyesmi megteszi a $DB helyett:

$con = mysql_connect("127.0.0.1","root","","onlab");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
? :)

[ Szerkesztve ]

(#10165) fordfairlane válasza papa019 (#10164) üzenetére


fordfairlane
veterán

Igen, csak itt is fennáll az a helyzet, hogyha használsz egy módszert, akkor a programban következetesen végig azt érdemes használni. Ha mysql_connect, akkor nem a $DB-t használod, hanem mindenhol mysql_query-t, pl.

x gon' give it to ya

(#10166) Sk8erPeter válasza papa019 (#10161) üzenetére


Sk8erPeter
nagyúr

Bár asszem már ezt priviben megbeszéltük (már keverem a dolgokat, de mintha épp veled beszéltem volna erről), de az ilyen tákolt wrapperosztályok adatbázis-kapcsolódáshoz, query-khez már csak azért is feleslegesek, mert lényegében indokolatlanul felfedezed a spanyolviaszt, becsomagolod az alapvető műveleteket egy saját osztályba, de úgy, hogy pl. a MySQLi vagy PDO neked már eleve objektumorientált kezelhetőséget kínál, plusz kezeli azt az elképesztő sok hibalehetőséget (vagy legalább azok nagy részét), amikre Te csak hosszú évek kínszenvedései alapján jönnél rá (nem kevés ideje javítják ezeket az osztályokat is a PHP-ben).
Ahogy már javasolta fordfairlane is, én is azt tanácsolnám, hogy egyszerűen dobd ki ezt az osztályt, és térj át a PDO-ra vagy akár egy komoly ORM-re, és következetesen használd.

Sk8erPeter

(#10167) trisztan94 válasza ArchElf (#10147) üzenetére


trisztan94
őstag

<?php
if( isset( $_COOKIE['user'] ) )
{
var_dump($_COOKIE);
}
else
{
header("location:../index.html");
}
?>

Na most, ezzel az a baj, hogy ha belépek akkoris visszadob az index.html-re, de a jó benne az, hogy kívülről sem lehet megnyitni. Mit csinálok rosszul?

:R

https://heureka-kreativ.hu

(#10168) Sk8erPeter válasza trisztan94 (#10167) üzenetére


Sk8erPeter
nagyúr

Beállítod valahol egyáltalán a $_COOKIE['user']-t?
Egyébként értelmesebb lenne akkor már $_SESSION-t használni (session_start()-tal).

Sk8erPeter

(#10169) trisztan94 válasza Sk8erPeter (#10168) üzenetére


trisztan94
őstag

Igen, a Connect.php-ban, a login_successful.php-ban hivatkozok is rá, és működik, szóval nem nagyon értem miért nem jó :S A lényeg az, hogy ha van cookie akkor marad a fooldal.php-n, ha nincs akkor visszaléptet az index.html-re, ahol a bejelentkezés van :D

https://heureka-kreativ.hu

(#10170) PazsitZ válasza trisztan94 (#10167) üzenetére


PazsitZ
addikt

Amint írtad, az adott oldal alapvetően bejelentkezés alapú.
Ebből kifolyólag az adott belépési módon kellene az adott html-t is "levédeni".

mod:
Közben látom született új hsz.
Ha máshol, azaz a bejelentkezés is ezen az alapon működik, akkor passz.
Alapvetően a bejelntkezéshez is le lehet rakni-vizsgálni ugyanúgy egy user kulcsot cska akkor az a $_SESSION tömb lesz.

[ Szerkesztve ]

- http://pazsitz.hu -

(#10171) trisztan94 válasza PazsitZ (#10170) üzenetére


trisztan94
őstag

a belépési mód _post, és session alapú, de sessionnal fogalmam sincs hogy kéne megcsinálni, szóval maradt a cookie :D

https://heureka-kreativ.hu

(#10172) trisztan94


trisztan94
őstag

Jó, rájöttem. A lehető legegyszerűbbre nem gondoltam :))

if( $_COOKIE["user"] == null)
{
header("location:../index.html");
}
?>

https://heureka-kreativ.hu

(#10173) mobal válasza trisztan94 (#10171) üzenetére


mobal
MODERÁTOR

sessionnal mondjuk létrehozol egy sütit user néven, és beállítod az értékének a felhasználó nevet.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10174) papa019 válasza Sk8erPeter (#10166) üzenetére


papa019
senior tag

Tehát ha jól értem, akkor ennyi elég az általam használt osztály helyett:
$host = '127.0.0.1';
$user = 'root';
$pass = '';
$dbname = 'onlab';

$DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);

:F
Kipróbáltam, működik, de nem tudom, hogy erre gondoltatok-e. :B

(#10175) mobal válasza papa019 (#10174) üzenetére


mobal
MODERÁTOR

Csak ez a PDO létezik.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10176) papa019 válasza mobal (#10175) üzenetére


papa019
senior tag

Oké, nekem ez teljesen új dolog. :B
Megnéztem a dokumentációt és az adatbázis műveleteimet remélhetőleg sikerült szabályosra cserélni. :R

(#10177) mobal válasza papa019 (#10176) üzenetére


mobal
MODERÁTOR

Itt egy kis tutorial: [link], továbbá javaslom, hogy csinálj belőle egy osztályt, mondjuk egyke tervezési mintával és akkor többet már nem lesz szükséged arra, hogy megírd. Kiindulási alapnak ez elég.

Mindjárt jön kutyi és kikapok, hogy miket linkelgetek ;]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10178) trisztan94 válasza mobal (#10173) üzenetére


trisztan94
őstag

Hát mégsem működik. Ez a kódom most, kívülről nem lehet megnyitni, de az a baj, hogy bejelentkezésnél is ezt dobja ki...
Checklogin.php:

$myusername=$_POST['user'];
$mypassword=$_POST['password'];
setcookie(user, $myusername, time()+3600);

fooldal.html

if ($_COOKIE["user"] != null)
{
if($_COOKIE["user"] != "felh1")
{
header("location:../php/not_logged_in.php");
}
else if($_COOKIE["user"] != "felh2")
{
header("location:../php/not_logged_in.php");
}
else if($_COOKIE["user"] != "felh3")
{
header("location:../php/not_logged_in.php");
}
}
else
{
header("location:../php/not_logged_in.php");
}

Igazából 3 admin van jelenleg az oldalon, az egyik én vagyok. Nekik szeretném először biztosítani a belépést, majd egy külön adatbázisban a felhasználókét.

https://heureka-kreativ.hu

(#10179) Sk8erPeter válasza mobal (#10177) üzenetére


Sk8erPeter
nagyúr

"Mindjárt jön kutyi és kikapok, hogy miket linkelgetek"
Miről beszélsz? Miért szólnék be azért, hogy belinkelsz egy tutorialt? Magyarázatot követelek. :D

Inkább Athlon64+ fogja letépni a fejedet a Singleton-minta javasolásáért. ;]

(#10174) papa019 : igen, erre gondoltam.

Sk8erPeter

(#10180) mobal válasza Sk8erPeter (#10179) üzenetére


mobal
MODERÁTOR

Nem értem miért baj a Singleton. Én szeretem alkalmazni. Régebben mindig Sebességszabi is kikapott a linkelésért ;]

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10181) Soak válasza trisztan94 (#10178) üzenetére


Soak
veterán

Szia,

Én így csináltam meg .

a lap tetejére:

if(!$session->is_logged_in()){
redirect_to("../sign_in.php");

session.php :

private $logged_in=false;

class Session {

function __construct() {
session_start();
$this->check_message();
$this->check_login();
if($this->logged_in) {
ha be van jelentkezve
} else {
ha nincs
}
}


public function is_logged_in() {
return $this->logged_in;
}


}

private function check_login() {
if(isset($_SESSION['user_id'])) {
$this->user_id = $_SESSION['user_id'];
$this->logged_in = true;
} else {
unset($this->user_id);
$this->logged_in = false;
}
}

$session = new Session();
$message = $session->message();

Asszem nem hagytam ki semmit.

Szerk: de persze, hogy kihagytam

function redirect_to( $location = NULL ) {
if ($location != NULL) {
header("Location: {$location}");
exit;
}
}

[ Szerkesztve ]

(#10182) Peter Kiss válasza trisztan94 (#10172) üzenetére


Peter Kiss
senior tag
LOGOUT blog

Ez biztosan nem jó, legalább egy E_NOTICE-t dob rá a PHP, hiszen az index (user) nem feltétlenül található meg a tömbben.

setcookie(user, $myusername, time()+3600);

Szintén hibaforrás, szerintem nincs user nevű konstansod (E_NOTICE szintén), tedd idézőjelek közé ("user").

Kapcsold be a PHP hibák megjelenítését!

(#10183) Sk8erPeter válasza mobal (#10180) üzenetére


Sk8erPeter
nagyúr

Olvass vissza, #9911 környékén kezdődött a vita a Singletonokról.
Linkek esetén meg legfeljebb akkor szóltam be, ha a linken található tutorial gány megoldásokat mutatott be, nem szoktam ok nélkül pampogni, mindig megmagyarázom, ha valami baj van a linkelt cuccal. Legközelebb az indoklást is olvasd el, hátha átjön. :)

[ Szerkesztve ]

Sk8erPeter

(#10184) cucka válasza mobal (#10180) üzenetére


cucka
addikt

Nem baj a singleton, csak nincs igazán értelme egy php-s adatbázis osztálynál, fölöslegesen bonyolítja a kódot.

(#10185) trisztan94 válasza Soak (#10181) üzenetére


trisztan94
őstag

Működik :R :R

Köszönöm szépen! :DD

https://heureka-kreativ.hu

(#10186) trisztan94 válasza Peter Kiss (#10182) üzenetére


trisztan94
őstag

Hát, én CODA-t használok macen, nem hiszem, hogy azon belehet :(

https://heureka-kreativ.hu

(#10187) fordfairlane válasza cucka (#10184) üzenetére


fordfairlane
veterán

Hogyhogy nincs értelme?

x gon' give it to ya

(#10188) mobal válasza Sk8erPeter (#10183) üzenetére


mobal
MODERÁTOR

Jól van, csak kötözködni akartam :D

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10189) Sk8erPeter válasza trisztan94 (#10186) üzenetére


Sk8erPeter
nagyúr

Ha a PHP telepítve van, és működik, akkor ahhoz tartozik egy konfigurációs fájl is (php.ini), ott pedig be lehet állítani, csak meg kell keresni azt az adott fájlt.
Ha nagyon nincs kedved vele tökölni, akkor a fájlod elejére beteheted ezt:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL | E_STRICT);

=======

(#10188) mobal: neszóljábe! :D

Sk8erPeter

(#10190) mobal


mobal
MODERÁTOR

Költői kérdés: lassan reinstall lesz. Wamp vagy Xampp? (Csak ez a két opció!)

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#10191) j0k3r! válasza Soak (#10181) üzenetére


j0k3r!
senior tag

ezen meg egy kicsit javitani kellene szerintem. a $logged_in valtozonak az osztalyon belul lenne a helye, raadasul a zarojelezes se stimmel, valamint nem kavarnam ossze a session kezelest es a user autentikaciot egy osztalyon belul.

en egy egyszerubb session kezelo osztalyt ilyen funkciokkal tudnek elkepzelni: start, set, get, unset, destroy (utobbi ketto mehetne egy helyre - pl.: egy default ertekkel rendelkezo parameterrel)

az autentikaciot tartalmazo osztaly meg a "session wrapper" osztaly segitsegevel manipulalna a $_SESSION tombot

mod: ja meg ugye erdemes lenne a camelCase nevkonvenciot kovetni

[ Szerkesztve ]

some men just wanna watch the world burn...

(#10192) fordfairlane válasza mobal (#10190) üzenetére


fordfairlane
veterán

Költői kérdésekre nincs válasz. :D Ez nagyon is gyakorlati kérdés. Én eddig XAMPP-t használtam Windows alatt, de mostanában gondolokodom a WAMP-on, a XAMPP-ot már régóta nem frissítették.

x gon' give it to ya

(#10193) Siriusb válasza mobal (#10190) üzenetére


Siriusb
veterán

LAMP. Tessék kitörni végre a windows bűvköréből. ;] A szervereken amúgy is általában linux van, szóval próbáld meg a teszt- és fejlesztői környezetet a leginkább összehangolni az élessel. :P

(#10194) ArchElf válasza Siriusb (#10193) üzenetére


ArchElf
addikt

Nem kötekedésből, de nálunk kb 50 szerverből csak egy linux van (az is kényszerből).

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#10195) Siriusb válasza ArchElf (#10194) üzenetére


Siriusb
veterán

És ez mennyire általános? Csak tisztázásképpen, nekem elég kicsiny tapasztalatom van, szóval kíváncsi vagyok a véleményedre.

(#10196) ArchElf válasza Siriusb (#10195) üzenetére


ArchElf
addikt

Az erősen cégcsoportfüggő. Az előző munkahelyemen meg csak kényszerből voltak windows-os szervereink. Gyakorlatilag csak a login, levelezpőszerver és néhány fejlesztett alkalmazás szervere volt windows - a többi solaris volt és linux (összesen kb 100-150 szerver).
Ez a dolog - nagy cégeknél - nem rendszergazdai döntés eredménye. Ez a vállalatvezetők hitkérdése.

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#10197) Soak válasza j0k3r! (#10191) üzenetére


Soak
veterán

a $logged_in természetesen az osztályon belül van, csak nem egyszerre copyztam és így sikerült kutyafuttában. A zárójelezés is copy hiba.

egyelőre ez tökéletesen működik, persze, percről percre változik. A camelCase-t használom, de csak html-ben, nekem php-ben úgy összefolynak a dolgok.

(#10198) Sk8erPeter válasza mobal (#10190) üzenetére


Sk8erPeter
nagyúr

Akkor is harmadik opció :D : IIS+kattintgatós Web Platform Installer+MySQL+FastCGI PHP.
Totál felesleges Windows-ra rákényszeríteni az Apache-ot: lassabb, mint az IIS (ezen a platformon).

===

(#10196) ArchElf :
"Ez a vállalatvezetők hitkérdése."
Meg gondolom anyagi kérdés is - ha valahol nincs pénz Windows-os liszenszekre, vagy másra szánják azt a pénzt inkább, akkor maradnak a Linuxnál.

===

(#10193) Siriusb : a Windows-fika témája lejárt lemez. :DD

Sk8erPeter

(#10199) ArchElf válasza Sk8erPeter (#10198) üzenetére


ArchElf
addikt

Solaris sem olcsó (főleg, hogy egy sun clustert bérelt a cég a régi MF helyébe). Ja és Oracle volt szinte az összes adatbázis. Nem pénzkérdés volt, hanem hitkérdés - ahogy itt is.

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#10200) Sk8erPeter válasza j0k3r! (#10191) üzenetére


Sk8erPeter
nagyúr

"ja meg ugye erdemes lenne a camelCase nevkonvenciot kovetni"
Na, jó is, hogy nyitottad a témát, már akartam ebben a témában veletek eszmecserét folytatni.
A PHP beépített függvényei sem mindig konzekvensek, sokszor kevertek a névkonvenciók, de azért a legtöbb "globális" függvény neve következetesen underscore-ral ellátott, míg az objektumorientált kód (lásd PDO, DateTime class, stb.) metódusai a camelCase-konvenciót követik. Aztán a .NET-es konvenciókhoz hasonlóan lehet látni egy-két kódban Pascal case-t is, de ez a ritkább eset, már amennyire legalábbis én eddig észrevettem.

Én általában inkább követem az eredeti szokásokat, tehát osztályon belüli metódusoknak én is camelCase-neveket adok, globális függvényeknek pedig underscore-ral ellátottat, de néha a mai napig belekavarodom, és van, hogy keverem a kettőt, aztán utólag persze javíthatom következetes névre. Bár általában törekszem az objektum-orientált kódra, van, amikor ezt mellőznöm kell, pl. a Drupal használatánál, ami egyelőre erősen procedurális (okok itt olvashatók, amúgy is érdekes cikk), és itt is az underscore használata a jellemző a függvényeknél.

Nálatok mi a bevett szokás?
Maradtok annál, hogy OOP-s jellegű kódolásnál camelCase, procedurális kódolásnál underscore, vagy következetesen ragaszkodtok az egyik konvencióhoz?

Sk8erPeter

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.