ugrás a tartalomhoz

Archívum - Júl 2, 2011 - Fórum téma

Haladó PHP: kb. '1' == '2' ...parser bug?

prom3theus · 2011. Júl. 2. (Szo), 23.16

<?php
$s1 = '00050003000500000008000100000000';
$s2 = '00050003000500000008000200000000';
var_dump((string)$s1 == (string)$s2? 'y' : 'n');
?>
A var_dump() kimenete: y

Ez Ubuntu Linux alatt, 5.3.5-ös PHP-val fordult elő (semmi extra modul, hacsak az xdebug annak nem számít). Érdeklődve kérdezem: elmagyarázná valaki, hogyan lehetséges ez?

Megjegyzés: ez a kimenet felvet bizonyos kérdéseket azért az MD5 hash-ek összehasonlításakor is...

A konkrét feladatban egyébként arra lenne szükségem, hogy a két stringből melyik a "kisebb" és melyik a "nagyobb", vagy persze adott esetben egyenlőek-e. Verziószámokat szeretnék ellenőrizni úgy, hogy a fentihez hasonló normál alakra hozom őket, elkerülve azt, hogy külön erre a problémára egy osztályt kelljen írnom és implementálni kelljen minden komparáló operátorra egy metódust.

Előre is köszi a segítséget!
 

Jó az, ha a leszármazott más típussal tér vissza, mint a szülő?

H.Z. v2 · 2011. Júl. 2. (Szo), 20.50
Okoz-e valakinek lelki sérülést egy olyan húzás, ha a szülő osztály egy metódusa más típusú értéket ad vissza, mint a leszármazotté? :-)
(szóval, hibának számít-e, ha ilyet teszek?)

Visszatértem az alapokhoz és újra 0-ról próbálom felépíteni a kis oldalamat. Itt kaptam valakitől az ötletet, hogy a rekordok kezelésére nem ártana egy absztrakt osztály, aminek a kiterjesztésével hozhatom létre a tényleges adatokhoz szükséges osztályokat.

abstract class RecordHandler {
    protected $buffer=array(); # Ide kerülnek a beolvasott adatok
                               # Egy tömbelem=egy sor, minden sor egy-egy tömb,
                               # melyben egy-egy elem=a sor egy mezője

    ...
    public function getData(){ 
      ... 
      return $buffer;
    }
    ...
}

# ez egy olyan osztály, amely biztosítja, hogy az objektum csak akkor jöjjön
# létre, ha a létrehozásához megadott kulcshoz max. 1 sor/rekord tartozik
# a tárolóban (ami nem feltétlenül RDBMS, ezért a körülményes megfogalmazás)
abstract class UniqRecordHandler extends RecordHandler {
   ...
   public function getData(){
      ...
      return $buffer[0];
   }
}
Ez így mennyire gázos?
Normális körülmények közt a fenti szülő és leszármazott működése csak annyiban tér el egymástól, hogy a gyerek osztály végrehajt egy ellenőrzést a beolvasott adatokon és exceptiont dob, ha egynél több sort talált a kulcsához. Ha nem írom felül a getData-t, akkor a visszaadott értékre mindig kétdimenziós tömbként kellene hivatkozni, ami kényelmetlen lenne.
De egyáltalán az, hogy az egyedi kulcsból létrejövő objektumokat külön kezelem, ez mint elképzelés elfogadható?
(RDBMS-t használva nincs sok értelme, hiszen ráhúzok a megfelelő mezőre egy unique key-t és nem kell tovább foglalkozni vele, de gondolok arra az esetre, ha mondjuk rámjön a hülyeség és mondjuk CSV file-t akarok "adatbázis" helyett használni)
 

Django multiblog

pear · 2011. Júl. 2. (Szo), 17.10
Sziasztok!

Djangoban szeretnék segítséget kérni. VPS-en szeretnénk blogolni három barátommal, ez a része rendben van, mindent sikeresen beállítottunk. Regisztráció nem lesz, az adminban létrehoztam a felhasználókat.

Amin nem sikerül túllépni az a blog app. Rongyosra olvastam a tutorialokat de vagy nem az én esetemről szól vagy annyira sok a kód, hogy nem vagyok képes kibogarászni, hogy voltaképp melyik része kéne nekem a megértéséhez.

# models.py
from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
    title = models.CharField(max_length=100)
    body = models.TextField()
    user = models.ForeignKey(User)
Tudom most nagyon sokat kérek de ha valaki lenne szíves ehhez a models.py-hez egy views.py, forms.py és egy templates/post.html-t mutatni annak nagyon örülnék. A post.html-be mehetne a <form> és a beküldött tartalom is, az átláthatóság kedvéért.
Annyi lenne a lényeg, hogy hármónk blogja külön lenne, tehát ha én írok egy bejegyzést akkor az csak az én oldalamon látszódjon és oda csak én tudjak beküldeni tartalmat.

Lehet túl sokat kérek. Nem szeretnék senkivel megíratni egy multiblogot, csak kéne egy nagyon alap multiblog app, hogy megértsem. Köszönöm ha tudsz segíteni.
 

Törlés megerősitése

aky22 · 2011. Júl. 2. (Szo), 16.07
Lécci segítsetek! Van egy oldal ahol a törléshez megerősítés kéne, de ha a mégse gombra kattintok akkor is törli azt a sort (adatbázisról van szó). itt a script:
<script type="text/javascript">
			function elhagyod()
				{
					var elhagy=confirm("Valóban törlöd a bejegyzést?");
					if (elhagy==true)
					{
						window.open("delete.php","_self");	
					}
					else
					{
						return false
					}
				}
</script>
és a php (ez a button oldali rész):
<?php
				require_once("../include/dbconn.php");
				$p="SELECT * FROM `news`";
				$e=mysql_query($p);
				echo '<p><a href="news.php?i=0"><img src="img/psd-new-button.png" alt="Hír feltöltése" border="none" /></a></p>';
				echo '<table id="newstb" cellpadding="0" cellspacing="0" border="0" class="display">';
				echo '<thead>
						<tr>
							<th>ID</th>
							<th>Cím</th>
							<th>Tartalom</th>
							<th>Írta</th>
							<th>Létrehozva</th>
							<th>Módosítás</th>
						</tr>
						</thead>';
				echo '<tbody>';
				while ($row=mysql_fetch_assoc($e))
				{
				echo '<tr>
							<td>'.$row['id'].'</td>
							<td>'.$row['title'].'</td>
							<td>'.$row['content'].'</td>
							<td>'.$row['name'].'</td>
							<td>'.$row['date'].'</td>
							<td><a href="modification.php?id='.$row['id'].'"><img src="img/psd-m-button.png" alt="módosítás"></a><a href="delete.php?id='.$row['id'].'" onclick="elhagyod()"><img src="img/psd-m-button.png" alt="delete"></a></td>
						 </tr>';
				}
				echo '</tbody>';
				echo '</table>';
			}?>
 

Buffer.prototype = new Array();

Karvaly84 · 2011. Júl. 2. (Szo), 08.45
Helló guruk!

Az Array osztályt szeretném kiterjeszteni, egy buffer-t szeretnék html elemeknek, amit css selector-okkal tudok feltölteni és arra gondoltam az alap Array tökéletes alap lenne, de pl a splice metódusnál a length tulajdonság változik csak rendesen az elemek, indexek ott maradnak ha nem szurok be új elemet (mondjuk ezt ki lehet küszöbölni), de azért érdekelne, hogy, valaki próbált már ilyesmit? Csak szeretném elkerülni a napig tartó tesztelést minden böngészőn azért kérdezem, hogy lehet e így csinálni működnek e a örökölt metódusok?
 

Netbeans + Zend FW + PhpUnit

inf · 2011. Júl. 2. (Szo), 00.14
Sziasztok!

Netbeans + zend + phpunit telepítésével küzdök. Most próbálok áttérni IDE-re az idétlenkedésről.

Van egy godaddy accountom, és oda szeretnék egy zend-es weblapot. A gondom első körben a verziókkal van, godaddynél 5.2.14 van, a zend pedig 5.2.4-et követel. Nyilán a 14>4, viszont 100%-ig biztos akarok lenni, hogy tényleg így kell nézni, és nem azt, hogy 1-essel kezdődik a 14. :-) Szóval arra vagyok kíváncsi, hogy szerintetek is elfut e az accon?

Azzal kapcsolatban is van kérdésem, hogy hogyan tudnék közbeiktatni egy teszt szervert? Netbeans-nél nekem úgy jött le, hogy megadok egy ftp szervert, aztán oda felmásolja valahogyan a projekt fájljait, de mondjuk ha localhostot adom meg, akkor nem történik semmi a projekt fájljaival, nem jelennek meg a mappájukban, ahol kéne. Számomra ez elég érthetetlen, pedig biztosan van logikus magyarázat, ugye? :D

Phpunit-ig még nem jutottam el, láttam, hogy van hozzá seleniumos kiterjesztés is, ami jó előjel, de úgy néz ki ott is gondok lesznek majd a telepítéssel. Egyelőre bemásoltam a kiterjesztéseket, de a dbunit-hoz külön bat fájl volt a packban, amit majd valszeg kézzel kell hívogatnom, mert a netbeans nem ismeri csak a phpunit bat-ját... (Egyelőre még nem néztem meg, hogy ez a dbunit mire jó, nem tudom elképzelni, hogy az adatbázis tesztelést hogyan lehet automatizálással segíteni, de biztos van valami megoldás erre is, különben nem lenne ilyen stuff :D)