<?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>Yusuf KOÇ</title>
	<atom:link href="http://www.ysfkc.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ysfkc.com</link>
	<description>Php Günlüğü</description>
	<lastBuildDate>Fri, 23 Jul 2010 16:39:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Php Upload Class</title>
		<link>http://www.ysfkc.com/php/php-upload-class.html</link>
		<comments>http://www.ysfkc.com/php/php-upload-class.html#comments</comments>
		<pubDate>Sun, 09 May 2010 01:38:09 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=284</guid>
		<description><![CDATA[merhabalar efendim sanırım yine baya uzun bir zaman oldu bloğa yazı girmeyeli. Çok yoğun bir tempo da çalıştığımdan kendime bile vakit ayıramıyorum çoğu zaman. Neyse vakti zamanında yazmış ve kullanmış olduğum bir upload classı sizle paylaşayım dedim. Klasik bir upload sınıfı kullanımı biraz kafa karıştırabilir ama basit bir yapısı var. Kullanım örnekleri : &#60; ?php [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ysfkc.com/wp-content/uploads/php.jpg"><img class="alignleft size-full wp-image-198" title="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" alt="" width="100" height="50" /></a>merhabalar efendim sanırım yine baya uzun bir zaman oldu bloğa yazı girmeyeli. Çok yoğun bir tempo da çalıştığımdan kendime bile vakit ayıramıyorum çoğu zaman. Neyse vakti zamanında yazmış ve kullanmış olduğum bir upload classı sizle paylaşayım dedim.</p>
<p>Klasik bir upload sınıfı kullanımı biraz kafa karıştırabilir ama basit bir yapısı var.<br />
<span id="more-284"></span><br />
Kullanım örnekleri :</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$upload</span> <span style="color: #339933;">=</span> Upload<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$upload</span> <span style="color: #339933;">=</span> Upload<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'directory'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'upload/'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$upload</span> <span style="color: #339933;">=</span> Upload<span style="color: #339933;">::</span><span style="color: #004000;">factory</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'directory'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'upload/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'allowed_ext'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'zip'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'rar'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$upload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$upload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">save</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_FILES</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'yeni isim'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>görüldüğü gibi isterseniz default ayarlda kullanabilirsiniz isterseniz settings dizisin de istediğiniz bir elemanı değiştirerek de kullanabilir veya tüm ayarları değiştirerek de kullanabilirsiniz.  Ayrıca save metoduna ikinci parametre olarak da yeni bir dosya ismi verebilirsiniz. yukarıdakiler örnek için yazılmıştır satırlar birbirinden bağımsızdır <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Dosya boyutu içinse kullanabileceğiniz harfler GMKB yani gigabyte megabyte kilobyte byte şeklinde örneğin 1M 1G gibi.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
&nbsp;
<span style="color: #009933; font-style: italic;">/**
 * @author Yusuf KOÇ ( Raiden )
 * @copyright 2009 © http://ysfkc.com
 * @license Licensed under the GNU General Public License, version 2. 
 * @license the file http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
 * @version $Id: upload.class.php 1 2009-12-04 raiden $
 */</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> Upload
<span style="color: #009900;">&#123;</span>    
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    *  @var array default upload settings
    **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> static <span style="color: #000088;">$config</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
        <span style="color: #0000ff;">'directory'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'upload'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'allowed_ext'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'jpg'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'gif'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'png'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'allowed_size'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'1M'</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'chmod'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #208080;">0644</span><span style="color: #339933;">,</span>
        <span style="color: #0000ff;">'remove_spaces'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">true</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Construct Metod
    * @param array $config 
    **/</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">array_overwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Factory of Class
    * @return object Class
    **/</span> 
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> factory<span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>   
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
           <span style="color: #b1b100;">return</span>  <span style="color: #000000; font-weight: bold;">new</span> Upload<span style="color: #339933;">;</span>
        <span style="color: #b1b100;">else</span>
           <span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> Upload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Overwrite Array Value 
    * @param array $array
    **/</span>
    <span style="color: #000000; font-weight: bold;">private</span> static <span style="color: #000000; font-weight: bold;">function</span> array_overwrite<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span> <span style="color: #000088;">$array</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Argument is not array!'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">array_intersect_key</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$array</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">AS</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
           <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Upload Save
    * @param array $_FILES['name']
    * @param string New Filename
    **/</span>    
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> save<span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span> <span style="color: #000088;">$file</span><span style="color: #339933;">,</span> <span style="color: #000088;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">is_uploaded_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tmp_name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_null</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #990000;">uniqid</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'remove_spaces'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#\s+#'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'_'</span><span style="color: #339933;">,</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check_directory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'directory'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' is not writable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check_allowed_ext</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> 
        <span style="color: #009900;">&#123;</span>
            <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'The file extension is not valid. Allowed Extension: '</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">', '</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'allowed_ext'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">check_allowed_size</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'allowed_size'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">===</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Maximum file size exceeded. Allowed Size: '</span><span style="color: #339933;">.</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'allowed_size'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000088;">$filePath</span> <span style="color: #339933;">=</span> <span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'directory'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #009900; font-weight: bold;">DIRECTORY_SEPARATOR</span><span style="color: #339933;">.</span><span style="color: #000088;">$filename</span><span style="color: #339933;">;</span>
&nbsp;
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">move_uploaded_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'tmp_name'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><span style="color: #000088;">$filePath</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'chmod'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                <span style="color: #990000;">chmod</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filePath</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'chmod'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
&nbsp;
            <span style="color: #b1b100;">return</span> <span style="color: #000088;">$filePath</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Check Directory (is_dir or is_writable)
    * @return bool 
    **/</span>    
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> check_directory<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_dir</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'directory'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">||</span> <span style="color: #990000;">is_writable</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">realpath</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'directory'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Check File Extension
    * @return bool 
    **/</span>        
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> check_allowed_ext<span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">pathinfo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span>PATHINFO_EXTENSION<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$config</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'allowed_ext'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #009933; font-style: italic;">/**
    * Check File Size
    * @copyright http://www.kohanaphp.com
    * @param array $_FILES['name']
    * @param string File Size
    * @return bool 
    **/</span>    
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> check_allowed_size<span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #339933;">,</span><span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">preg_match</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'#[0-9]++[GMKB]#'</span><span style="color: #339933;">,</span><span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$size</span><span style="color: #339933;">,-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'G'</span><span style="color: #339933;">:</span> <span style="color: #000088;">$size</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #990000;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1024</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">3</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'M'</span><span style="color: #339933;">:</span> <span style="color: #000088;">$size</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #990000;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1024</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">case</span> <span style="color: #0000ff;">'K'</span><span style="color: #339933;">:</span> <span style="color: #000088;">$size</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">*</span> <span style="color: #990000;">pow</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1024</span><span style="color: #339933;">,</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">default</span> <span style="color: #339933;">:</span> <span style="color: #000088;">$size</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                <span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #b1b100;">return</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$file</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'size'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">&lt;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$size</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-upload-class.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Yeni bir iş yeni bir hayat ve grou.ps</title>
		<link>http://www.ysfkc.com/genel/yeni-bir-is-yeni-bir-hayat-ve-grou-ps.html</link>
		<comments>http://www.ysfkc.com/genel/yeni-bir-is-yeni-bir-hayat-ve-grou-ps.html#comments</comments>
		<pubDate>Wed, 17 Mar 2010 23:12:51 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[grou.ps]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=282</guid>
		<description><![CDATA[Uzun bir aradan sonra ilk defa bloğa bişeyler yazma fırsatı bulabildim. Aslında yazım çok da uzun olmayacak zira herkesin bir koşuşturmaca içinde yaşağıdı dünya da ben de koşuşturmaca içindeyim. En son Bursa &#8216;da çalıştığım firmadan ocak 2010 itibari ile ayrılmış bulunmaktayım ve yeni iş hayatıma benim için de çok zor bir karar olmasına rağmen İstanbul [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ysfkc.com/wp-content/uploads/groups.png"><img src="http://www.ysfkc.com/wp-content/uploads/groups.png" alt="" title="groups" width="160" height="60" class="alignleft size-full wp-image-300" /></a>Uzun bir aradan sonra ilk defa bloğa bişeyler yazma fırsatı bulabildim. Aslında yazım çok da uzun olmayacak zira<br />
herkesin bir koşuşturmaca içinde yaşağıdı dünya da ben de koşuşturmaca içindeyim. En son Bursa &#8216;da çalıştığım firmadan ocak 2010 itibari ile ayrılmış bulunmaktayım ve yeni iş hayatıma benim için de çok zor bir karar olmasına rağmen İstanbul &#8216;da Grou.ps de devam etmekteyim. Nedenini bilmediğim bir şekil de İstanbul &#8216;dan hep korkmuşumdur uzun bir süre düşünmeme de sebebiyet vermiş olsa da en nihayetin de şuan da İstanbul &#8216;dayım.</p>
<p>Sevgiyle kalın..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/genel/yeni-bir-is-yeni-bir-hayat-ve-grou-ps.html/feed</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Php ile class özellikleri</title>
		<link>http://www.ysfkc.com/php/php-class-ozellikleri.html</link>
		<comments>http://www.ysfkc.com/php/php-class-ozellikleri.html#comments</comments>
		<pubDate>Sun, 11 Oct 2009 17:51:49 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[final]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[private]]></category>
		<category><![CDATA[protected]]></category>
		<category><![CDATA[public]]></category>
		<category><![CDATA[static]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=266</guid>
		<description><![CDATA[Bir önceki yazımızda sınıflarımızda kullanabileceğimiz public, protected, private, static, const ve final gibi özelliklerin geldiğine değinmiştik. Bu özellikler sınıf içerisindeki bir değişken veya metodun kullanıcı tarafından kullanılıp kullanılmayacağına karar vermek veya türetilen bir sınıfın bunu kullanıp kullanamacağını karar vermek için kullanıyoruz. Yani kısaca özetlemek gerekirse bir kısıtlama söz konusu yapabilmekteyiz. Bu özellik php4 ile yapılamamktaydı [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" alt="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" title="php" class="alignleft size-full wp-image-198"/> Bir önceki yazımızda sınıflarımızda kullanabileceğimiz public, protected, private, static, const ve  final gibi özelliklerin geldiğine değinmiştik. Bu özellikler sınıf içerisindeki bir değişken veya metodun kullanıcı tarafından kullanılıp kullanılmayacağına karar vermek veya türetilen bir sınıfın bunu kullanıp kullanamacağını karar vermek için kullanıyoruz. Yani kısaca özetlemek gerekirse bir kısıtlama söz konusu yapabilmekteyiz. Bu özellik php4 ile yapılamamktaydı bu da yazılımcılara büyük bir sıkıntı idi.<br />
<span id="more-266"></span><br />
Zira hangi metot veya değişkenlerin public veya private olduğunu belirtmek zorunda kalırdık. Php5 ile artık bu özelliklere hakimiz.</p>
<p><strong>Public Özelliği</strong><br />
Öncelikle public özelliğine değinelim. Public özelliği atanan bir değişken veya metot kullanıcı tarafından erişilebilir olmaktadır. Aynı zamanda sınıf içerisinden veya türeyen bir sınıf içersinden de erişebilir. </p>
<p>Hemen bir örnekle daha da pekiştirelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yusuf'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> a<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isimGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki örnekte hem bir değişkene public özelliğini hem de bir metoda public özelliğini atadık. Public ve diğer özellikler değişken veya metotdan önce başına yazılır örnektede görüldüğü gibi.</p>
<p>$a ve isimGetir() e public özelliği atandığı için sınıf başlatarak a classındaki bu değerlere erişme hakkına sahip olduk. </p>
<p><strong>Protected Özelliği</strong><br />
Protected özelliği atanan bir değişken veya metot ise sadece sınıf içerisinden veya türetilen bir sınıf içerisinden erişim hakkına izin verir. Yani kullanıcı başlattığı sınıf içindeki protected tanımlı değişken veya metotlara asla erişemez. </p>
<p>Örnekle devam edelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    protected <span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yusuf'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> a<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isimGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki örneği çalıştırdığımızda ekrana &#8220;Cannot access protected property..&#8221; diye hata çıktısı verecektir. Bunun sebebi classı başlatıp ardından da protected özelliği atanmiş değişkeni çağırmak istememizden dolayıdır. Ancak echo $a->isim; satırını silersek ekrana bu sefer $isim içeriğini yazacaktır. </p>
<p>Neden hata vermiyor gibi bir düşünce gelebilir aklınıza ama ne demiştik protected veya private tanımlı bir değişken veya metot sadece sınıfın kendi içinden çağrılabilir dolayısıyla public tanımlanmış isimGetir() metodu sınıfın içinde olduğu için $isim değişkenine bu metot sayesinde erişmiş oluyoruz. Böylece classı kullanacakların classı olumsuz etkilemesinden korumuş oluyoruz.</p>
<p><strong>Private Özelliği</strong><br />
Private özelliği de işleyiş olarak protected a benzese de aslında protected tek farkı türetilen bir classdan erişim hakkı yapamaz. Bu da demek oluyor ki private özelliği atanan değişken veya metot sadece o sınıf için özel olmuş oluyor. Hiç bir şekilde classı kullanmak isteyen ziyaretçi veya türeyen bir sınıf bu değişken veya metota erişim yapamaz. </p>
<p>Örnekle devam edelim</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yusuf'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> a<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;br /&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isimGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki örnekte bu sefer $isim değişkenine private özelliğini atadık. Sınıf başlatılıp ardından $isim değişkenini çağırdığımızda ekranda &#8220;Cannot access private property..&#8221; gibi bir hata ile karşılaşarız. Çünkü $isim değişkeni sadece o sınıf için özel bir değişken. Hiç bir şekilde dışarıdan ( kullanıcı tarafından ) veya türetilen sınıftan erişim sağlanamaz. </p>
<p>Böylelikle türetilen classların da buna etki edebilerek mevcut classın işleyişinin bozulması önlenmiş olur. </p>
<p><strong>Static özelliği</strong><br />
Static özelliği atanmış bir değişken veya metot ramde saklanır. Böylece sürekli sürekli çağrılarak ramden çalmak yerine bir defaya mahsus rame atılarak performans kaybı önlenmiş olur. Static özelliğini herşeye atamakta doğru değildir. Zira projede kullanılacak sabit değişken veya metota atamak doğrudur. Çünkü bunlar hep aynı sonucu döndürecekleri için bir defaya rame aktarılması bize performans açısından büyük hız getirecektir. </p>
<p>Ayrıca static özelliği atanmış bir değişken veya metoda sınıf içerisinde $this yerine self:: ile erişim sağlanmaktadır.</p>
<p>Örnekle devam edelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> static <span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yusuf'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #000088;">$isim</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
a<span style="color: #339933;">::</span><span style="color: #004000;">isimGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu örnekte de isimGetir metoduna hem public ( dışarıdan erişim yapma özelliği ) hem de static özelliği atanmıştır. Burda tek fark olarak normalde sınıfı başlatmamız gerekirdi ancak isimGetir metodu static olduğu için direk olarak erişim yapabiliriz. Buna değişkenlerde dahil. </p>
<p>Dışarıdan erişim yaparken sınıfadi::metot veya değişken şeklinde erişim yapabiliriz. a::isimGetir() diyerek a classının isimGetir() metoduna direk erişim yaptık ve static metodumuzu çağırdık böylece artık rame atıldı veya bundan sonraki her çağrılmasında artık bize ramden dönerek performans artışı sağlamış olacaktır.</p>
<p><strong>Const Özelliği</strong><br />
Const özelliği atanan bir değer class içinde sabit özelliğini alır. Bu bizim normal kodlarımızdaki define() metodu ile aynıdır fakat sadece class içinde geçerlidir. Const özelliği atanmış bir sabite $this ile değil yine self:: ile erişim yapmaktayız dolayısıyla static özelliğini alırlar çünkü sınıf boyunca sakladıkları değer aynı kalacağından bir defaya mahsus ram de tutulurlar. </p>
<p>Ayrıca const özelliği atanan sabitin başında $ işareti bulanamaz. const sabit = &#8216;deger&#8217;; şeklinde tanımlanırlar.</p>
<p>Örnekle devam edelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">const</span> isim <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yusuf'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> a<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> a<span style="color: #339933;">::</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$a</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isimGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu örnekte de görüldüğü gibi isim sabiti static özelliği de olduğu için hem a::isim; şeklinde ulaşabildik hem de sınıf içinde bir metot sayesinde ulaşabildik. </p>
<p><strong>Final Özelliği</strong><br />
Final özelliği atanmış bir metot veya sınıf son metot veya son sınıf olduğunu işaret eder yani kendisinden sonra herhangi bir başka metot veya sınıf gelemez anlamını taşımaktadır. </p>
<p>Örnekle devam edelim</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'yusuf'</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">public</span> final <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> 
    <span style="color: #009900;">&#123;</span> 
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">;</span> 
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> b <span style="color: #000000; font-weight: bold;">extends</span> a 
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$baska_isim</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'veli'</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> isimGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">baska_isim</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$b</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> b<span style="color: #339933;">;</span>
<span style="color: #000088;">$b</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isimGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu örnekte a classının en son metodunun isimGetir() olduğu tanımlanmıştır ve bu metotdan sonra herhangi bir metot gelemeyecektir. Yani a sınıfından türeyen bir class da hiç bir şekilde isimGetir() metodu bulunamaz çünkü isimGetir() a sınıfının final metodur ve override (yok sayılarak yeniden aynı metot yazılamaz. (tamam tercümem biraz düşük oldu <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) edilemez.</p>
<p>Bu örnek bize metot içindi birde sınıflar bir birleri arasında türetilirken artık son sınıf olduğunu belirtmemiz gerekebilir. Bunun için de class sözcüğünün başına final anahtarı getirilir.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a 
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> aGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ben A sınıfıyım. '</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> b <span style="color: #000000; font-weight: bold;">extends</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> bGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ben B sınıfıyım. '</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
final <span style="color: #000000; font-weight: bold;">class</span> c <span style="color: #000000; font-weight: bold;">extends</span> b
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> cGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ben C sınıfıyım ve benden sonra başka bir sınıf bana extends edilemez. '</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$c</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> c<span style="color: #339933;">;</span>
<span style="color: #000088;">$c</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">aGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$c</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">bGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$c</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">cGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">class</span> d <span style="color: #000000; font-weight: bold;">extends</span> c 
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> dGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Ben D sınıfıyım.'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$d</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> d<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu örnek çalıştırıldığında c classı final anahtar sözcüğü atandığı için kendisinden hiç bir şekilde sınıf türetilemeyecek ve ekrana  &#8220;Class d my not inherit from final class (c)..&#8221; gibi şeklinde hata mesajı döndürecektir. </p>
<p>Artık yazımızın sonuna geldik bir class yazmak için temel bilgileri vermeye çalıştım. Soru ve önerileriniz için yorumları kullanabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-class-ozellikleri.html/feed</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Php ile classlara giriş. __construct ve __destruct metotları</title>
		<link>http://www.ysfkc.com/php/php-ile-classlara-giris-__construct-ve-__destruct-metotlari.html</link>
		<comments>http://www.ysfkc.com/php/php-ile-classlara-giris-__construct-ve-__destruct-metotlari.html#comments</comments>
		<pubDate>Sat, 10 Oct 2009 16:01:30 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[__construct]]></category>
		<category><![CDATA[__destruct]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=262</guid>
		<description><![CDATA[Php ile classlara girmeden önce class yapısı hakkında biraz bilgi vermek istiyorum. Php5 ile class yapılarında ciddi bir değişiklik söz konusu oldu php4 deki class yapısı bize bir çok şeyi yapmamıza imkan vermiyordu. Örneğin bir signleton yazılım desenine olanak sağlamıyordu veya gizli olması gereken fonksiyon veya değişkenleri gizlemek için genelde diğerlerinden ayrı olsun diye comment [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" class="alignleft size-full wp-image-198" title="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" alt="php"/> Php ile classlara girmeden önce class yapısı hakkında biraz bilgi vermek istiyorum. Php5 ile class yapılarında ciddi bir değişiklik söz konusu oldu php4 deki class yapısı bize bir çok şeyi yapmamıza imkan vermiyordu. Örneğin bir signleton yazılım desenine olanak sağlamıyordu veya gizli olması gereken fonksiyon veya değişkenleri gizlemek için genelde diğerlerinden ayrı olsun diye comment satırları girer veya önlerine _ koyarak belirtmeye çalışır kullanıcıların yanlış kullanımlarını önlemeye çalışırdık.<br />
<span id="more-262"></span><br />
Php5 den itibaren artık bu tarz comment satırları girmek yerine public, protected, private, static, final, const gibi tanımlar gelmiştir. Bunlar class yazılımında programcılara büyük bir avantaj sağlamaktadır. Örneğin kullanıcının kullanmasını istemediğimiz metot veya değişkenleri private tanımlayarak sadece class içerisinden erişim yapmasını sağlayabiliyoruz ve daha bunun gibi bir çok yeni güzel şeyler var.</p>
<p>Şimdi gelelim classlara. Php ile class yazarken genelde kullanacağımız iki adet sabit metot var diyelim. Sabit dedim başka bir isim bulamadım şuan aklıma gelmiyor. Bu metotlar olmassa olmaz değil ama zamanla çok işimize yarayacak olan __construct ve __destruct metotlarıdır. Construct bir class başlatılırken yapılacak olan işleri yapmakla yükümlü olurken destruct metodu ise tam tersi sınıf sonlandığında yapılması gereken işleri yapmakla yükümlüdür. </p>
<p>Nerelerde kullanacağız sorusuna gelince, Bir sınıf başlatılırken belli başlı bazı ayarlar veya ek işlemler varsa bu metot içine yazılır. Destruct da ise tam tersi örneğin bir class başlarken kullanılan ayarları sıfırlamak için kullanabilirsiniz veya değişkenleri unset etmek için kullanabilirsiniz. </p>
<p>Örnekle devam edelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ilk_sinifim
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba \'ilk_sinifim\' başlatıldı.'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$ilk_sinifim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ilk_sinifim<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki örneğimizi yazıp çalıştırdığımız da ekrana &#8220;Merhaba &#8216;ilk_sinifim&#8217; başlatıldı.&#8221; şeklinde bir yazıyla karşılaşırız. Ne demiştik __construct (kurucu fonksiyon, yapılandırıcı fonksiyon) sınıf başlatılırken yapılması gereken işlemler varsa bu metotda tanımlanır ve sınıf başlatılırken bu metot içeriği otomatik çalışır demiştik. </p>
<p>Aynı zamanda eğer __construct metodunu kullanacaksak kesinlikle public anahtarı ile tanımlanması gerekir aksi halde protected veya private tanımlanırsa hata ile karşılaşırsınız.  İsterseniz __construct metoduna sınıf başlatılırken değişken de gönderebilirsiniz. </p>
<p>Aynı örneği bu sefer de değişken göndererek yapalım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ilk_sinifim
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba {$name}, ben \'ilk_sinifim\' memnun oldum.'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$ilk_sinifim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ilk_sinifim<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu örnekte de sınıf başlatılırken bir $name değişkeni gönderdik. Sınıf başlatıldığında ise &#8220;Merhaba yusuf ben &#8216;ilk_sinifim&#8217; memnun oldum.&#8221; yazısı çıkacaktır. </p>
<p>Destruct metodu ise construct metodunun tam tersidir. Sınıf sona erdiğindeki işlemleri yapar.</p>
<p>Bir örnekle pekiştirelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ilk_sinifim
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __destruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Name değişken içeriği boşaltıldı.'</span><span style="color: #339933;">;</span>
        <span style="color: #990000;">unset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$ilk_sinifim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ilk_sinifim<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Örnekte öncelikle dışardan erişemeyecekleri şekilde bir $name değişkeni tanımladık. Ardından __construct metoduna bir $name değişkeni göndererek sınıf içinde tanımladığımız $name değişkenine eşitledik ve ekrana yazdırdık. Ardından sınıf sonlanacağı vakit ekrana &#8220;Name değişken içeriği boşaltıldı.&#8221; yazısını yazıp sınıf içindeki $name değişkeninin içeriğini boşaltacaktır. </p>
<p>Destruct metoduda construct gibi public ile tanımlanmalıdır. </p>
<p>Soru ve görüşleriniz için yorumlar sizi bekliyor <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-ile-classlara-giris-__construct-ve-__destruct-metotlari.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Php __autoload fonksiyonu</title>
		<link>http://www.ysfkc.com/php/php-__autoload-fonksiyonu.html</link>
		<comments>http://www.ysfkc.com/php/php-__autoload-fonksiyonu.html#comments</comments>
		<pubDate>Fri, 09 Oct 2009 20:48:34 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[__autoload]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=260</guid>
		<description><![CDATA[Php ile classlara değinmeden önce OOP nedir diye bir açıklama gereği hissetmiyorum . Direk konuya dalmak istiyorum zira herkes bi yerde mutlaka OOP nedir diye okumuşlardır. Okumayanlar içinde buyrun link burada. Sınıflara ilk __autoload fonksiyondan başlayalım. Bu metot sınıflarımızı uygulamamıza otomatik olarak yükleyecektir böylece şu classı yüklemişmiydim yüklememişmiydim derdinden kurtuluyoruz. Metotu bir örnekle açıklayıp bitirelim. [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" alt="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" title="php" class="alignleft size-full wp-image-198"/>Php ile classlara değinmeden önce OOP nedir diye bir açıklama gereği hissetmiyorum <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Direk konuya dalmak istiyorum zira herkes bi yerde mutlaka OOP nedir diye okumuşlardır. Okumayanlar içinde buyrun link <a href="http://tr.wikipedia.org/wiki/Nesne_Y%C3%B6nelimli_Programlama" target="_blank">burada</a>.<br />
<span id="more-260"></span><br />
Sınıflara ilk __autoload fonksiyondan başlayalım. Bu metot sınıflarımızı uygulamamıza otomatik olarak yükleyecektir böylece şu classı yüklemişmiydim yüklememişmiydim derdinden kurtuluyoruz. </p>
<p>Metotu bir örnekle açıklayıp bitirelim. Öncelikle aşağıdaki bir dizin içinde index.php ve bir de class adında dizin yaratalım ve class içerisine de a.class.php ve b.class.php diye iki adet php dosyası yaratalım. </p>
<p><a href="http://www.ysfkc.com/wp-content/uploads/autoload_1.jpg"><img class="aligncenter size-full wp-image-259" title="autoload_1" src="http://www.ysfkc.com/wp-content/uploads/autoload_1.jpg" alt="autoload_1" width="594" height="60" /></a></p>
<p>Burdaki önemli nokta class dosyalarımıza gelişi güzel bir isim değilde bir düzen içerisinde isim vermektir. Çünkü fonksiyon belli bir düzeneğe göre eklemee yapacaktır. örneğin a.class.php dosyasını yüklerken class.b.php dosyasını yüklemeyecektir az sonra yazacağımız fonksiyon da bu düzeni siz kendinize göre oluşturabilirsiniz.</p>
<p>Evet dosyalarımızı oluşturduğumuza göre autoload fonksiyonumuzu yazalım.</p>
<p>autoload.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">function</span> __autoload<span style="color: #009900;">&#40;</span><span style="color: #000088;">$classname</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$include</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;class/<span style="color: #006699; font-weight: bold;">{$classname}</span>.class.php&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$include</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$include</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #990000;">exit</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$classname</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' sınıfı yüklenemedi.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıdaki autoload fonksiyonunu sayfamızın üstüne include ediyoruz. Daha sonra ise class dizinindeki herhangi bir sınıfı başlatmak istediğimiz de autoload devreye girerek sınıfı yüklüyor. Eğer hiç bir sınıf başlatmassanız sayfada hiç bir sınıfı dahil etmemiş olursunuz.</p>
<p>class/a.class.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> a
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba ben a sınıfıyım'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>class/b.class.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> b
<span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Merhaba ben b sınıfıyım'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıda autoload fonksiyonu ile yüklenmesini istediğimiz sınıfları yazdık ve class dizinine sınıfadi.class.php şeklinde kaydettik. </p>
<p>Şimdide en son olarak index.php mizi yazalım ve örneğimizin çalışır halini görelim.</p>
<p>index.php:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #666666; font-style: italic;"># Sayfa tipini ve karakter setini belirtelim.
</span><span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Content-Type: text/html; charset=utf-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Autoload fonksiyonumuzu dahil edelim.
</span><span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'autoload.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$a</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> a<span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'&lt;br&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$b</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> b<span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Görüldüğü üzere __autoload fonksiyonu biz tek tek belirtmemize gerek kalmadan tüm sınıfları sayfamıza dahil etti. Burdan şu anlaşılmasın içinde 100 tane dosya varsa hepsini dahil etmiyor sayfanızda hangi sınıfı başlatıyorsanız o sınıfı dahil ediyor sadece.</p>
<p>Yazıyı noktalarken soru ve merak ettikleriniz için yorumları kullanabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-__autoload-fonksiyonu.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Php Decorate Design Pattern</title>
		<link>http://www.ysfkc.com/php/php-decorate-design-pattern.html</link>
		<comments>http://www.ysfkc.com/php/php-decorate-design-pattern.html#comments</comments>
		<pubDate>Sun, 04 Oct 2009 13:38:39 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[decorate pattern]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=247</guid>
		<description><![CDATA[Decorate design pattern ile bir sınıfa başka bir sınıfı gömerek o sınıfa yeni bir sınıfın özelliklerini katmaya decorate pattern denir. Decorate design pattern için bir interface tanımlayalım. Bu interface sabit bir metot içereceği için basit şekilde vereceğiz tabi siz kendinize göre oluşturabilirsiniz. &#60; ?php interface isimDecorate &#123; public function __construct&#40;isim $isim&#41;; &#125; ?&#62; yukarıdaki interface [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" class="alignleft size-full wp-image-198" title="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" alt="php"/>Decorate design pattern ile bir sınıfa başka bir sınıfı gömerek o sınıfa yeni bir sınıfın özelliklerini katmaya decorate pattern denir.</p>
<p>Decorate design pattern için bir interface tanımlayalım. Bu interface sabit bir metot içereceği için basit şekilde vereceğiz tabi siz kendinize göre oluşturabilirsiniz.<br />
<span id="more-247"></span></p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">interface</span> isimDecorate
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span>isim <span style="color: #000088;">$isim</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>yukarıdaki interface de bir yapılandırıcı metot tanımladık ve bu metota adı isim olan bir sınıfın geleceğini belirttik. Şimdi de interface için uygun bir sınıf yazalım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> isimDecorateClass implements isimDecorate
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$isim</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span>isim <span style="color: #000088;">$isim</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$isim</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>yukarıdaki isim sınıfımızı mevcut arayüzümüze göre yazdık. Yapılandırıcı metoduna isim adında bir sınıfın geleceğini ve bu gelen sınıfı da isimDecorate sınıfımızın içindeki publictanımlı $isim e aktaracağız.</p>
<p>Şimdide isim sınıfımızı tanımlayalım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> isim
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$ad</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$soyad</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> adTanimla<span style="color: #009900;">&#40;</span><span style="color: #000088;">$ad</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ad</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$ad</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> soyadTanimla<span style="color: #009900;">&#40;</span><span style="color: #000088;">$soyad</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">soyad</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$soyad</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> adVeSoyadGetir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">'Adınız: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ad</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' Soyadınız: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">soyad</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Mevcut sınıflarımızı artık hazırladığımıza göre şimdi ise nasıl kullanacağız ona görelim.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> isim<span style="color: #339933;">;</span>
<span style="color: #000088;">$isim</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">adTanimla</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$isim</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">soyadTanimla</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'koç'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$isimDecorate</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> isimDecorateClass<span style="color: #009900;">&#40;</span><span style="color: #000088;">$isim</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$isimDecorate</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">adVeSoyadGetir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Evet görüldüğü üzere önce isim sınıfımızı new ile başlatıp ad ve soyad tanımladıktan sonra oluşturduğumuz bu sınıfı isimDecorate içine gömdük ve isimDecorate sınıfına isim sınıfının özelliklerini katmış olduk.</p>
<p>Soru ve görüşleriniz için yorumları kullanabilirsiniz <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/php-decorate-design-pattern.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Php Prototype Design Pattern</title>
		<link>http://www.ysfkc.com/php/prototype-pattern.html</link>
		<comments>http://www.ysfkc.com/php/prototype-pattern.html#comments</comments>
		<pubDate>Sat, 03 Oct 2009 11:42:55 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[prototip desen]]></category>
		<category><![CDATA[prototype pattern]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=242</guid>
		<description><![CDATA[Bazen oluşturduğumuz sınıfları tekrar tekrar kullanmak isteyebiliriz. Örneğin Ali&#8217;nin not bilgilerini getiren bir notgetir sınıfını aynı sayfada bir de Veli için kullanmak istediğimiz zaman notgetir sınıfını bu seferde Veli için new operatörü ile başlatıp erişim sağlardık. Bu da yani tekrar new operatörü ile sınıfı başlatmak yine bellekte bir miktar yerin notgetir sınıfı için yeniden yer [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" alt="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" title="php" class="alignleft size-full wp-image-198"/>Bazen oluşturduğumuz sınıfları tekrar tekrar kullanmak isteyebiliriz. Örneğin Ali&#8217;nin not bilgilerini getiren bir notgetir sınıfını aynı sayfada bir de Veli için kullanmak istediğimiz zaman notgetir sınıfını bu seferde Veli için new operatörü ile başlatıp erişim sağlardık.<br />
Bu da yani tekrar new operatörü ile sınıfı başlatmak yine bellekte bir miktar yerin notgetir sınıfı için yeniden yer ayrılmasına neden olacaktı. Prototype pattern ile  daha önceden new ile başlatılan sınıfın bir kopyasını alarak aynı sınıfı tekrar new operatörüyle başlatmaktan kaçınmış ve performans artışı sağlamış oluyoruz.<br />
<span id="more-242"></span><br />
Bir örnekle bahsedelim hemen.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> notgetir
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$isim</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$not</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> isim<span style="color: #009900;">&#40;</span><span style="color: #000088;">$isim</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$isim</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>	
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> not<span style="color: #009900;">&#40;</span><span style="color: #000088;">$not</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">not</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$not</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getir<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #339933;">.</span><span style="color: #0000ff;">' \'nin Notu: '</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">not</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __clone<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıda ismi ve notu belirtilen kişinin ismini ve not değerini ekrana yazan bir sınıf tanımladık. Burda yabancı olunulan metot __clone() dur. Bu metot bu sınıfın kopyalanabilir olmasını sağlar. Aslında yazmasakda kopyalanabilir  ama bazen bazı durumlarda tanımlanan sınıfın kopyalanması başımıza iş açabilir o yüzden sınıfların kopyalanma özelliğini kapatmak için bu __clone() metodunu ya private yaparız ya da içine exception ya da exit ile bir uyarı mesajı koyabiliriz. </p>
<p>Konuyu dağıtmadan devam edelim. Şimdi biz Ali için bu sınıfı çağıralım ve verilen bilgiler doğrultusunda bu bilgileri ekrana yazsın</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$not</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> notgetir<span style="color: #339933;">;</span>
<span style="color: #000088;">$not</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Ali'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">not</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>yukarıda sınıfı new operatörü ile başlattık ve hangi öğrencinin notunu istiyorsak onun ismini ve notunu set edip getir metodu ile ekrana yazdırdık.  Şimdide aynı işlemi Veli için yapalım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$not2</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> notgetir<span style="color: #339933;">;</span>
<span style="color: #000088;">$not2</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Veli'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">not</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Şimdi yukarıda ne yaptık aynı sınıfı tekrar new operatörü ile başlattık ve ram de bir miktar daha yer kapladık ve bu da haliyle zamanla kaynak tüketimine yol açıp performansı düşürecektir. </p>
<p>Aynı örneği şimdide bir prototipini oluşturarak yapalım. Aslında burda yapacağımız tek işlem daha önce Ali için başlatılmış sınıfın bir kopyasını almak.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$not2</span> <span style="color: #339933;">=</span> clone <span style="color: #000088;">$not</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$not2</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Veli'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">not</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Burda clone opetörü ile daha önce başlatılan notgetir sınıfının bir prototipini aldık yani kopyaladık böylelikle tekrar sınıfı başlatmaktan kurtulmuş olduk.</p>
<p>Bazılarınız $not2 = $not kısmı ile de yapılabilir bu diyebilir ama clone ile bu farklıdır. Aslında $not2 = $not demek $not2 nin $not a eşit olduğu anlamına gelir yani kopyasını almak değildir. Daha iyi anlayabilmek için aşağıdaki örneğe bakabilirsiniz.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$not</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> notgetir<span style="color: #339933;">;</span>
<span style="color: #000088;">$not</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">isim</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Ali'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">not</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$not2</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$not</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$not2</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$not3</span> <span style="color: #339933;">=</span> clone <span style="color: #000088;">$not</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$not3</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getir</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Burda not2 $nota eşitleniyor ve getir metodu çağrıldığında ekrana Ali&#8217;nin notu 90 yazarken $not3 ile yine getir metodu çağrıldığında ekrana hiç bişey yazmayacaktır. Çünkü biz not3 değişkenine $not un kopyasını aldık.</p>
<p>Hasta halimle bu kadar bahsedebildim. Anlam bozukluğu veya anlayamadığınız yerler var ise çekinmeden sorabilirsiniz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/prototype-pattern.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Php Factory Design Pattern</title>
		<link>http://www.ysfkc.com/php/factory-design-pattern.html</link>
		<comments>http://www.ysfkc.com/php/factory-design-pattern.html#comments</comments>
		<pubDate>Mon, 28 Sep 2009 20:38:24 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[factory pattern]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=239</guid>
		<description><![CDATA[Factory design pattern bize belirtilen sınıfları new operatörüyle başlatıp döndürür. Normal bir sınıf başlatmaktan pek bir farkı olmasada burdaki amaç bir nesne arayüzü yaratarak sınıflara erişimi bu arayüz üzerinden gerçekleştirmektir. Örnek olarak bir factory pattern sınıfı yazalım. Bu sınıf bize belirtilen nesne adına göre uygun bir dizinden ( class ) ilgili classı bulup başlatıp döndürdürsün. [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" class="alignleft size-full wp-image-198" title="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" alt="php"/>Factory design pattern bize belirtilen sınıfları new operatörüyle başlatıp döndürür. Normal bir sınıf başlatmaktan pek bir farkı olmasada burdaki amaç bir nesne arayüzü yaratarak sınıflara erişimi bu arayüz üzerinden gerçekleştirmektir.<br />
<span id="more-239"></span><br />
Örnek olarak bir factory pattern sınıfı yazalım. Bu sınıf bize belirtilen nesne adına göre uygun bir dizinden ( class ) ilgili classı bulup başlatıp döndürdürsün.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> factory
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">const</span> class_dir <span style="color: #339933;">=</span> <span style="color: #0000ff;">'classes'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> load<span style="color: #009900;">&#40;</span><span style="color: #000088;">$class</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		try
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">class_dir</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$class</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.class.php'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
			<span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">self</span><span style="color: #339933;">::</span><span style="color: #004000;">class_dir</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'/'</span><span style="color: #339933;">.</span><span style="color: #000088;">$class</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'.class.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000088;">$class</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span>
			<span style="color: #009900;">&#123;</span>
				throw <span style="color: #000000; font-weight: bold;">new</span> Exception<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Class Bulunamadı.'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>			
		<span style="color: #009900;">&#125;</span>
		catch <span style="color: #009900;">&#40;</span>Exception <span style="color: #000088;">$e</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$e</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıda tanımladığımız factory class bize belirtilen classın class_dir dizininde olup olmadığına bakarak eğer varsa  bize başlatarak dönecektir eğer yok ise catch bloğu çalışarak class bulunamadı hatasını verecektir. Ayrıca yukarıdaki sınıfa göre sınıflar class_dir dizininde ve dosya adları da abc.class.php şeklinde olduğu varsayılmıştır. </p>
<p>Şimdi gelelim iki tane sınıf yazalım. Birtanesi girilen ismi yazsın diğer ise sadece soyadını yazsın. Örnekleri basit tutuyorum ki anlaşılabilsin diye sonra demeyin isim ve soyisimden başka bişey bilmiyor musun be adam sen diye <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> name 
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Şimdide soyisim sınıfımızı tanımlayalım</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> surname 
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getSurname<span style="color: #009900;">&#40;</span><span style="color: #000088;">$surname</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$surname</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu classları class_dir dizinine name.class.php ve surname.class.php olarak kaydettiğinizi varsayıyorum ve factory sınıfımızın kullanımına geçiyorum</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'class_dir/factory.class.php'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$isim</span> <span style="color: #339933;">=</span> factory<span style="color: #339933;">::</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$isim</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf '</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$surname</span> <span style="color: #339933;">=</span> factory<span style="color: #339933;">::</span><span style="color: #004000;">load</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'surname'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$surname</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getSurname</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'koç'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Yukarıda öncelikle factory sınıfımızı sayfamıza dahil ediyoruz ve ardından artık bize hangi sınıf gerekiyorsa onu factory sınıfımıza bildiriyoruz. Eğer sınıf belirtilen dizin içinde mevcutsa bize sınıfı başlatıp döndürüyor değil ise hata veriyor. </p>
<p>Bunun bize faydası sınıfları daha tertipli ve düzenli bir şekilde başlatma olanağı sağlıyor ve tek bir arayüz üzerinden istediğimiz değişikliğe gitmemize olanak sağlıyor. </p>
<p>Şöyle bir örnek verirsek sanırım daha iyi anlaşılacaktır.  Farzedelim ki sınıflarınızı sayfalarınıza hep require veya include ile çağırdınız ve bir süre sonra sınıfları bir dizinde topladınız veya dizin adını değiştirdiniz. Ne yapmak lazım şimdi? Tüm sayfaları açıp require veya include satırlarını düzeltmek lazım. Ama eğer bunu factory pattern olarak düşünüp yazsaydık sadece factory classımızda değişiklik yaptığımızda tüm sitemizde uygulanmış olacaktı.</p>
<p>Umarım bişeyler aktarabilmişimdir.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/factory-design-pattern.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Php Adapter Design Pattern</title>
		<link>http://www.ysfkc.com/php/adapter-design-pattern.html</link>
		<comments>http://www.ysfkc.com/php/adapter-design-pattern.html#comments</comments>
		<pubDate>Sun, 27 Sep 2009 21:01:14 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[adapter design]]></category>
		<category><![CDATA[adapter pattern]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[oop]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=231</guid>
		<description><![CDATA[Merhaba arkadaşlar çok uzun bir aradan (3 ay) sonra ancak fırsat bulabildim. Bloğa yazamamamın sebeplerinden bazıları işi bıraktım ve yeni firmam da işe başladım bu zaman zarfı sürecinde yeni işime alıştım üç ay kadar ceviz.net yöneticilerinden Sercan Virlan ile beraber çalışma imkanı buldum ve şuan da yeni iş yerimde mutlu ve huzurluyum. Konuya gelecek olursak [...]]]></description>
			<content:encoded><![CDATA[<p><img width="100" height="50" alt="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" title="php" class="alignleft size-full wp-image-198"/>Merhaba arkadaşlar çok uzun bir aradan (3 ay) sonra ancak fırsat bulabildim. Bloğa yazamamamın sebeplerinden bazıları işi bıraktım ve yeni firmam da işe başladım bu zaman zarfı sürecinde yeni işime alıştım üç ay kadar ceviz.net yöneticilerinden Sercan Virlan ile beraber çalışma imkanı buldum ve şuan da yeni iş yerimde mutlu ve huzurluyum.<br />
<span id="more-231"></span><br />
 	Konuya gelecek olursak bu yazıda daha önceki bahsettiğim singleton pattern ile paralel olan bir başka pattern, adapter pattern hakkında bilgi vermeye çalışacağım. Adapter pattern nerelerde kullanılır gerekli midir değil midir buna karar verecek olanlar sizlersiniz ama gerçek anlamda bir MVC yapısı kullancaksak artık bu oop mimarisi ve design patternlere önem vermeliyiz. </p>
<p> 	Adapter patterni şöyle izah edebiliriz bir düşüneyim ımmm <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  bir firmada çalışan bir a elemanı var bu a elemanı bir proje geliştirmiş ve  işten bir süre sonra ayrılmış daha sonra ise işe siz başlamışsınız ve o projeye ek bişeyler yapmanız isteniyor ancak a elemanı kendine göre yazdığı için ufak bir kod değişikliği demek tüm projeyi baştan sona kontrol etmek anlamına geldiği için iş biraz sıkıcı ve yorucu olacaktır. Adapter pattern ile mevcut koda ( interface, abstract class ) extends ederek türetilen yeni bir interface veya abstract class yaparak mevcut projeyi bozmadan işimizi kolay halletme yoludur diyebiliriz. Örnek vermek istedim çünkü böyle daha kolay anlaşılır diye düşündüm. </p>
<p> 	Şimdi bizim a elemanı ne yapmış olsun bir tane interface tanımlasın ve bu interface sadece girilen ismi ekrana yazdırmak için kullanılan bir arayüz olsun aşağıdaki gibi</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">interface</span> isim
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Bu arayüze (interface) uygun sınıfınıda yazmış olsun.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> name implements isim
<span style="color: #009900;">&#123;</span>	
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>	Evet a elemanı tasarladığı arayüz üzerine sınıfınıda yazmış oldu. Ama hiç bir zaman kendisinin işi bırakacağını ve kendisinden sonra gelen birisinin buna ekleme yapması ihtimalini düşünmeyerek kodunu tamamladı. Derken işi bıraktı biz başladık işe ve bizim bu arayüze eklemeler yapmamız gerekti. Ancak arayüzü değiştirirsek bu sefer ona bağlı tüm classlarıda yeniden düzenlemek zorunda kalacağız. Çünkü arayüzle birleştirilmiş class birleştiriliği arayüz ile birebir aynı olmak zorundadır.</p>
<p>	Yani biz tutupda arayüzü şu hale getiremeyiz.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">interface</span> isim
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getData<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>	Bu şekile çevrilirse arayüz buna bağlı olan tüm classlar hata verecek ve işin içinden çıkılmaz bir hal alacaktır. Peki o zaman ne yapacağız mevcut yapıyı bozmadan nasıl kendi istediğimiz özellikleri bu isim arayüzüne ekleyeciz ? Classlar nasıl ki extends ile nasıl türetiliyor ise arayüzlerde bu şekilde türetilmektedir. </p>
<p>	Derken biz bu arayüze bir metot daha tanımlamamız gerekti bu da ne olsun getSurname() metodu olsun yani girilen bir soyadını ekrana yazsın. Ama bunu yaparkende mevcut classları bozmasın.</p>
<p>	Bunun içinde arayüzden arayüz türeteceğiz</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">interface</span> yeni_isim <span style="color: #000000; font-weight: bold;">extends</span> isim
<span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getSurname<span style="color: #009900;">&#40;</span><span style="color: #000088;">$surname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Hemen buna uygun sınıfımızı da yazalım</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> new_name implements yeni_isim
<span style="color: #009900;">&#123;</span>	
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getName<span style="color: #009900;">&#40;</span><span style="color: #000088;">$name</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$name</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getSurname<span style="color: #009900;">&#40;</span><span style="color: #000088;">$surname</span><span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$surname</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>	Evet herşey bu kadar. Yeni sınıfımızı istediğimiz arayüze kolayca adapte etmiş olduk. Bir kaç açıklama daha yapmak gerekirse Name Classı sadece getName() metodunu çalıştırır getSurname() metoduna erişim yapamaz ancak New_Name Classı ise hem getName() hem de getSurname() metotlarına ulaşabilir çünkü yeni_isim arayüzünden türetildiği için getSurname() metodunu barındırmak zorunda kaldı yeni_isim de isim arayüzünden türetildiği için aynı zamanda getName() metodunu da barındırmak zorunda kaldı. </p>
<p>	Örnek kullanımlarını da gösterelim daha anlaşılır olsun.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> name<span style="color: #339933;">;</span>
<span style="color: #000088;">$name</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$name</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getSurname</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'koç'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Php Hata verecektir.</span>
&nbsp;
<span style="color: #000088;">$new_name</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> new_name<span style="color: #339933;">;</span>
<span style="color: #000088;">$new_name</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'yusuf'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$new_name</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getSurname</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'koç'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Görüldüğü üzere Adapter Pattern bu kadar.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/adapter-design-pattern.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XSS Filter Fonksiyonu</title>
		<link>http://www.ysfkc.com/php/xss-filter-uygulamasi.html</link>
		<comments>http://www.ysfkc.com/php/xss-filter-uygulamasi.html#comments</comments>
		<pubDate>Fri, 26 Jun 2009 15:03:28 +0000</pubDate>
		<dc:creator>Raiden</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[güvenli html]]></category>
		<category><![CDATA[xss]]></category>
		<category><![CDATA[xss clean]]></category>
		<category><![CDATA[xss filter]]></category>

		<guid isPermaLink="false">http://www.ysfkc.com/?p=212</guid>
		<description><![CDATA[Bir çoğumuz uygulama yazmaktayız veya bir şekilde kullanıcılardan veri almaktayız. Herşeyi yapıp bitirdiğimizde ise oh be çekemiyoruz ne yazık ki bir de bunun kötü niyetli kişiler olduğunu düşünüp sisteme zarar verecek halleri düşünüp kestirip önüne geçebilmek gerekiyor. Genelde sitelerimize kullanıcının veri girebileceği yerlerden sızmaya çalışılır hoş bazen bir ID alanından da sql injecktion yapılabiliniyor ama [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ysfkc.com/wp-content/uploads/php.jpg"><img class="alignleft size-full wp-image-198" title="php" src="http://www.ysfkc.com/wp-content/uploads/php.jpg" alt="php" width="100" height="50" /></a> Bir çoğumuz uygulama yazmaktayız veya bir şekilde kullanıcılardan veri almaktayız. Herşeyi yapıp bitirdiğimizde ise oh be çekemiyoruz ne yazık ki <img src='http://www.ysfkc.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  bir de bunun kötü niyetli kişiler olduğunu düşünüp sisteme zarar verecek halleri düşünüp kestirip önüne geçebilmek gerekiyor. Genelde sitelerimize kullanıcının veri girebileceği yerlerden sızmaya çalışılır hoş bazen bir ID alanından da sql injecktion yapılabiliniyor ama ben bu konuda XSS olayına kısaca gireceğim.<br />
<span id="more-212"></span><br />
XSS açıkları genelde programcının gelen verileri süzmeden veritabanına eklemesi ve listelenmesi olayıyla ya da alınan bir değişken değerin filtrelenmeden ekrana yazdırılmasıyla olmakta. Bu sebeple istenmeyen durumlara sebebiyet vermekte nedir bu sebepler dersek eğer en basitinden yönetici bilgileri çalınabilir eğer cookie bir oturum kullanıyor ise tabiki normal session ise pek bir işe <span style="text-decoration: underline;">yaramayabilir..</span></p>
<p>Kısa bir  <a href="http://kallahar.com/smallprojects/php_xss_filter_function.php" target="_blank">RemoveXSS</a> fonksiyonunu tanıtacağım zira kendiside çok basit ve etkili bir fonksiyon ve bir çok  xss den kurtulmanıza olanak sağlıyor.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> RemoveXSS<span style="color: #009900;">&#40;</span><span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
   <span style="color: #000088;">$val</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$search</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'abcdefghijklmnopqrstuvwxyz'</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$search</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'ABCDEFGHIJKLMNOPQRSTUVWXYZ'</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$search</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'1234567890!@#$%^&amp;*()'</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$search</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'~`&quot;;:?+/={}[]-_|\'\\'</span><span style="color: #339933;">;</span>
   <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$val</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/(&amp;#[xX]0{0,8}'</span><span style="color: #339933;">.</span><span style="color: #990000;">dechex</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">';?)/i'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$search</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// with a ;</span>
      <span style="color: #000088;">$val</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'/(&amp;#0{0,8}'</span><span style="color: #339933;">.</span><span style="color: #990000;">ord</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$search</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">';?)/'</span><span style="color: #339933;">,</span> <span style="color: #000088;">$search</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// with a ;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   <span style="color: #000088;">$ra1</span> <span style="color: #339933;">=</span> <span style="color: #990000;">Array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'javascript'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'vbscript'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'expression'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'applet'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'xml'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'blink'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'link'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'style'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'script'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'embed'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'object'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'iframe'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'frame'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'frameset'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ilayer'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'layer'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'bgsound'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'title'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'base'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$ra2</span> <span style="color: #339933;">=</span> <span style="color: #990000;">Array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'onabort'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onactivate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onafterprint'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onafterupdate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforeactivate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforecopy'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforecut'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforedeactivate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforeeditfocus'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforepaste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforeprint'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforeunload'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbeforeupdate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onblur'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onbounce'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'oncellchange'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onchange'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onclick'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'oncontextmenu'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'oncontrolselect'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'oncopy'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'oncut'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondataavailable'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondatasetchanged'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondatasetcomplete'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondblclick'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondeactivate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondrag'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondragend'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondragenter'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondragleave'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondragover'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondragstart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'ondrop'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onerror'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onerrorupdate'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onfilterchange'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onfinish'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onfocus'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onfocusin'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onfocusout'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onhelp'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onkeydown'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onkeypress'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onkeyup'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onlayoutcomplete'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onload'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onlosecapture'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmousedown'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmouseenter'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmouseleave'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmousemove'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmouseout'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmouseover'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmouseup'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmousewheel'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmove'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmoveend'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onmovestart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onpaste'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onpropertychange'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onreadystatechange'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onreset'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onresize'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onresizeend'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onresizestart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onrowenter'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onrowexit'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onrowsdelete'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onrowsinserted'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onscroll'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onselect'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onselectionchange'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onselectstart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onstart'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onstop'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onsubmit'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'onunload'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   <span style="color: #000088;">$ra</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ra1</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ra2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #000088;">$found</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
   <span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$found</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000088;">$val_before</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$val</span><span style="color: #339933;">;</span>
      <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">sizeof</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ra</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
         <span style="color: #000088;">$pattern</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'/'</span><span style="color: #339933;">;</span>
         <span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$j</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #000088;">$j</span> <span style="color: #339933;">&lt;</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ra</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000088;">$j</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$j</span> <span style="color: #339933;">&gt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
               <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'('</span><span style="color: #339933;">;</span>
               <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'(&amp;#[xX]0{0,8}([9ab]);)'</span><span style="color: #339933;">;</span>
               <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'|'</span><span style="color: #339933;">;</span>
               <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'|(&amp;#0{0,8}([9|10|13]);)'</span><span style="color: #339933;">;</span>
               <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">')*'</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #000088;">$ra</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$j</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
         <span style="color: #000088;">$pattern</span> <span style="color: #339933;">.=</span> <span style="color: #0000ff;">'/i'</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$replacement</span> <span style="color: #339933;">=</span> <span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ra</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">'&lt;x&gt;'</span><span style="color: #339933;">.</span><span style="color: #990000;">substr</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$ra</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #000088;">$val</span> <span style="color: #339933;">=</span> <span style="color: #990000;">preg_replace</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$pattern</span><span style="color: #339933;">,</span> <span style="color: #000088;">$replacement</span><span style="color: #339933;">,</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
         <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$val_before</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$found</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
         <span style="color: #009900;">&#125;</span>
      <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
   <span style="color: #b1b100;">return</span> <span style="color: #000088;">$val</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Evet üstteki fonksiyonumuz ile kullanıcılardan alınan verileri geçirdiğimizde gönül rahatlığıyla verileri ekleyebilir veya listeleyebiliriz. </p>
<p>Kullanımına bir örnek vererek yazımızı noktalaylım.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$veri</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">' Ali Veli Deli &lt;img src=&quot;javascript:alert(\'XSS\');&quot;/&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> RemoveXSS<span style="color: #009900;">&#40;</span><span style="color: #000088;">$veri</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Dediğimizde çıktısı aşağıdaki gibi olacaktır.</p>

<div class="wp_syntax"><div class="code"><pre class="html" style="font-family:monospace;"> Ali Veli Deli &lt;img src=&quot;ja&lt;x&gt;vasc&lt;x&gt;ript:alert('XSS');&quot; /&gt;</pre></div></div>

<p>Görüldüğü üzere <em>javascript</em> kelimesinin arasına <x> ekleyerek olası XSS açığına karşı veriyi güvenli hale getirdi.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ysfkc.com/php/xss-filter-uygulamasi.html/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
	</channel>
</rss>
