<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>deadlime &#187; Unicode</title>
	<atom:link href="http://deadlime.hu/tag/unicode/feed/" rel="self" type="application/rss+xml" />
	<link>http://deadlime.hu</link>
	<description>unexpected terminator</description>
	<lastBuildDate>Mon, 14 May 2012 20:38:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>PHP 6</title>
		<link>http://deadlime.hu/2006/04/23/php-6/</link>
		<comments>http://deadlime.hu/2006/04/23/php-6/#comments</comments>
		<pubDate>Sun, 23 Apr 2006 14:55:30 +0000</pubDate>
		<dc:creator>#suidroot</dc:creator>
				<category><![CDATA[nincs kategória]]></category>
		<category><![CDATA[névterek]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Unicode]]></category>

		<guid isPermaLink="false">http://deadlime.hu/2006/04/23/php-6/</guid>
		<description><![CDATA[Nem kérdés: a legtöbb webfejlesztő álmai között kiemelkedő helyen szerepel az új PHP változat – szám szerint a hatodik – megjelenése. De mégis: kevesen vannak teljesen tisztában azzal, hogy pontosan mit is várhatnak a PHP 6-tól. Ebben a cikkben megpróbálom emészthető formában összefoglalni az új verzió nyújtotta legfontosabb lehetőségeket: 1. Unicode A PHP fejlesztői által [...]]]></description>
			<content:encoded><![CDATA[<p>Nem kérdés: a legtöbb webfejlesztő álmai között kiemelkedő helyen szerepel az új PHP változat – szám szerint a hatodik – megjelenése. De mégis: kevesen vannak teljesen tisztában azzal, hogy <em>pontosan</em> mit is várhatnak a PHP 6-tól. Ebben a cikkben megpróbálom emészthető formában összefoglalni az új verzió nyújtotta legfontosabb lehetőségeket:</p>

<h3>1. Unicode</h3>
<p>A PHP fejlesztői által elkövetett legnagyobb hiba talán az volt, hogy figyelmen kívül hagyták azt a változatos nyelvű/nemzetiségű környezetet, amelyben a PHP működik. A Unicode-sztringek kezelése eddig csak az <code>mb_string</code> kiterjesztésen keresztül volt lehetséges, ami viszont nem minden webszerveren vehető igénybe (arról nem is beszélve, hogy használata pluszkóddal/pluszmunkával jár). Szükség volt egy beépített, transzparens Unicode-implementációra. A fejlesztők választása az ICU (International Components for Unicode) nevű kipróbált kódkönyvtárra esett. A végső cél: a kódkönyvtár segítségével elérni, hogy minden sztring-kezelő függvény és operátor Unicode-biztossá váljon. A munka jól halad, egyetlen probléma van: az új Unicode-megoldást használva az alkalmazások kb. 25%-kal lassabbak lettek :-/.</p>

<h3>2. Tisztogatás</h3>
<ul>
<li><strong>register_globals, magic_quotes</strong> — Sokan megkérdőjelezték már ezen funkciók létjogosultságát az elmúlt években. Most megtörtént a nagy áttörés: a hatos verziótól kezdődően mindkét – súlyos biztonsági kockázatokkal járó – funkció <em>el fog tűnni</em>. Használatuk a PHP elindításakor <code>E_CORE_ERROR</code> szintű hibát fog okozni, tehát a szkript le sem fut; csak egy üzenet jelenik majd meg, ami figyelmeztet a használni kívánt funkció veszélyeire, illetve a biztonságos programozás fontosságára.</li>

<li><strong>safe_mode</strong> — A nevéhez méltatlanul a safe_mode gyakorlatilag soha nem volt képes biztonságosabbá tenni a PHP használatát, így szerintem senki nem csodálkozik, ha azt mondom: ettől is megszabadultak a fejlesztők. Használatakor szintén <code>E_CORE_ERROR</code> szintű hibát kapunk. (Ennek ellenére hasznosnak ítéltetett az open_basedir funkcionalitása, így ez megmarad.)</li>
</ul>

<h3>3. A Zend motor kiegészítései</h3>

<ul>
<li><strong>64-bites egészek</strong> — Döntés született arról is, hogy a már meglévő 32-bites integer típus mellé (tehát nem helyette!) szükség van egy 64-bites változatra is. Az új típus neve – meglepő módon – int64. Persze felmerül a kérdés: hogyan közöljük a motorral, hogy nekünk 64-bites integerre van szükségünk az alapértelmezett 32 helyett? A megoldás a változó típusának explicit meghatározása:
<pre class="code prettyprint lang-php">$bigInteger = (int64) 123456;</pre>
</li>

<li><strong>goto</strong> — Valószínűleg webes fórumok tucatjai lettek tele prokkal és kontrákkal a <code>goto</code> konstrukció PHP-s megvalósítását illetően. A fejlesztők végül egy igen kreatív ötlettel álltak elő ebben a nehéz kérdésben: a <code>break</code> kulcsszó kiterjesztésével hoznak létre a hírhedt <code>goto</code>-éhoz hasonló funkcionalitást. A <code>break</code> viszont továbbra is csak ciklusok és feltételes szerkezetek belsejében lesz használható, így csak ezekből lehet majd kiugrani egy adott címkére. Szemléltetésképpen:
<pre class="code prettyprint lang-php">
if (true)
{
    // Itt fogjuk magunkat, és hopp kiugrunk:
    break blah;
}

    echo 'Ez a szöveg soha nem jelenik meg.';

blah:
    echo &quot;Ide ugrottunk!&quot;;
</pre></li>

<li><strong><code>foreach</code> több dimenziós tömbökön</strong> — Egy apró, bár érdekes kiegészítés. Mostantól használható az alábbi szintaxis többdimenziós tömbökre alkalmazva:
<pre class="code prettyprint lang-php">
$a = array(array(1, 2), array(3, 4));

foreach( $a as $k =&gt; list($a, $b))
{
    // ...Itt játszunk az adatokkal...
}
</pre>
</li>
</ul>

<h3>4. OOP</h3>

<ul>
<li><strong>Névterek</strong> — Sokan zavarónak találták, hogy a PHPben nincsenek névterek. Több lehetséges megoldás közül végül ez lett a nyerő:
<pre class="code prettyprint lang-php">
namespace Foobar
{
    const testconst = 'xyz';
    function testfunc() { ... }
    class testclass
    {
        function abc() { ... }
    }
}

// Lehetséges használati mód pl.:
A\\testclass::abc();

// Így lehet majd importálni:
import A\\*;
</pre>
Tehát:
<ul>
    <li>Lesz egy namespace kulcsszó, amivel névterek hozhatóak létre.</li>
    <li>A névtereken belül osztályok, függvények és konstansok helyezkedhetnek majd el, változók nem.</li>
    <li>A névtér-operátor valószínűleg a '\' (backslash, visszaper) karakter lesz.</li>
    <li>Az <code>import</code> kulcsszóval lehet majd az alapértelmezett (név nélküli) névtérbe helyezni egy névtér tartalmát.</li>
</ul>
</li>

<li><strong>Függvények visszatérési típusa</strong> — Ezentúl lehetőség lesz jelezni a motor számára, hogy egy függvény visszatérési értéke pontosan milyen típusú objektum is lesz. Valószínűleg az alábbi megoldások közül fognak a fejlesztők kiválasztani egyet:
<pre class="code prettyprint lang-php">
    function ObjectName &amp;funcname();
    function &amp;ObjectName funcname();
    function &amp;funcname ObjectName();
    ObjectName function &amp;funcname();
    function &amp;funcname() returns ObjectName;
</pre>
</li>
</ul>

<p>Aki idáig eljutott annak gratulálok, remélem mindenki számára tudtam némi újdonsággal szolgálni. A fentebb említett funkciókat a fejlesztők folyamatosan építik be a PHP kódjába. Hogy a folyamat hol tart, arról nem tudok nyilatkozni; de ha valaki még ezután a cikk után is információra éhes, annak ajánlom a <a href="http://hu.php.net/mailing-lists.php">PHP levelezési listákat</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://deadlime.hu/2006/04/23/php-6/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>

