Zadejte hledaný výraz...

Ořez textu s <img>

Několik dní zpět jsem v jednom vlákně nastřelil zkracovač textu, který nebere v potaz a zachovává obrázky.
Hlavní logika je v metodě shorten():
Ale pořád mám pocit, že to jde udělat elegantněji.
Jak byste kód vylepšili? Je pochopitelný a čitelný?
Třída odhaluje jedinou metodu - právě shorten()
Používá fluid interface pro řetězení metod, ale neměl jsem k tomu žádný vážný důvod.
Proměnná $shortenedString by se mohla jmenovat $processedString, abych předjímal možné rozšíření funkčnosti. Z třídy by se mohl stát nějaký univerzálnější manipulátor s HTML, ne jen zkracovač textu s obrázky.
Třeba by mohl volitelně přehodit první nalezený obrázek úplně na začátek textu a přidat mu třídu. Pak by jméno $shortenedString nemělo smysl.
5. 6. 2011 18:03:08
https://webtrh.cz/diskuse/orez-textu-s-img/#reply642966
hm
verified
rating uzivatele
(20 hodnocení)
5. 6. 2011 19:49:52
ja bych ciste pro jednoduchost uziti udelal asi
public static function instance(){
.... (tvorba instance, pokud existuje, pouzit jiz vytvorenou a vratit)
}
volani by pak mohlo probihat jako
Img_Text_Shortener::instance($string)->shorten($string,150);
jde ale spis o preference, prakticky to zkrati zapis pouze o jediny radek, takze je otazka zda se to vyplati ci ne :))
5. 6. 2011 19:49:52
https://webtrh.cz/diskuse/orez-textu-s-img/#reply642965
Když už statickou funkci, tak bych udělal rovnou shorten()
Statické funkce možná mají opodstatnění u nějakých malých opakujících se funkcí, ale osobně se jim snažím vyhýbat, protože pak svádí k používání globálních dat.
Zajímavě o tom píše Miško Hevery:
Static methods are procedural in nature and they have no place in OO world.
5. 6. 2011 20:39:19
https://webtrh.cz/diskuse/orez-textu-s-img/#reply642964
hm
verified
rating uzivatele
(20 hodnocení)
5. 6. 2011 20:54:49
pravda, instance jsem zvykly pouzivat u vetsich trid, tady by to asi melo vetsi smysl primo pro fci jako takovou
5. 6. 2011 20:54:49
https://webtrh.cz/diskuse/orez-textu-s-img/#reply642963
Zdravím,
Napadlo mě řešit tento problém přes sprintf, pak jsem to dodelal uplne jinak:
Urcite by to slo jeste optimalizovat, je to jen prvni napad, jak bych to resil...oriznute obrazky jsou nalepene nakonci. Ani by nemusel byt pouzity nakonci preg_replace, ale jen replace...
Jinak k vašemu kódu myslím, že je logický, pro mě dobře čitelný a přehledný. Je to asi lepší řešení, než posílám já. To moje nebere obrázek za jeden char, ale za 2 - %s...kvůli tomu potom není výsledná délka zcela přesná, říkám první nápad, třeba pomůže k jinému;)
5. 6. 2011 21:00:20
https://webtrh.cz/diskuse/orez-textu-s-img/#reply642962
Tady je asi nejvetsim omezenim jazyk - v okamziku, kdy nemas sanci rozsirovat vestavene knihovny - jako retezec, apod., tak ztracis OO - musis pouzivat fce, staticke metody, adaptery a ruzne jine "hacky" - nejcistejsi z nich je simulace mixinu pomoci __call.
Tvuj puvodni priklad "trpi" hlavne z logickeho pohledu, ze ta trida reprezentuje operaci a ne "tridu veci", operace ma byt metoda, nejlepe prikaz, ktery nic nevraci, ale klidne muzes pouzivat i "fcionalni" styl, pak ale nezapomen upravit jmeno metody - shortenedTo(150)
Predstav si, jak by se ta metoda krasne vyjimala bud na retezci a nebo lepe na DOMElementu. A pravdepodobne by to bylo i mnohem jednodussi na realizaci a z dlouhodobeho hlediska i lepsi pro "udrzbu"
6. 6. 2011 01:19:12
https://webtrh.cz/diskuse/orez-textu-s-img/#reply642961
Pro odpověď se přihlašte.
Přihlásit