<?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>وب نویس &#187; پی اچ پی &#8211; php</title>
	<atom:link href="http://webnevis.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://webnevis.net</link>
	<description>وب نوشته های يك دانشجوی كامپیوتر</description>
	<lastBuildDate>Mon, 29 Aug 2016 18:56:58 +0000</lastBuildDate>
	<language>fa-IR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>کیک پی اچ پی ۳ &#8211; شروع کار</title>
		<link>http://webnevis.net/1394/12/13/%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c-3-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1/</link>
		<comments>http://webnevis.net/1394/12/13/%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c-3-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1/#comments</comments>
		<pubDate>Thu, 03 Mar 2016 08:45:34 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[cake php 3]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[cakephp3]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[فریم ورک کیک پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی 3]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=345</guid>
		<description><![CDATA[چند ماهی هست که نسخه جدید فریم ورک کیک پی اچ پی منتشر شده اما متاسفانه مطالب فارسی برای این نسخه وجود نداره و ندیدم هیچ وبلاگ یا سایتی در مورد این نسخه آموزشی گذاشته باشه، به همین خاطر تصمیم دارم تا جایی که می تونم و وقت وعلمم اجازه میده در مورد این نسخه [...]]]></description>
				<content:encoded><![CDATA[<p>چند ماهی هست که نسخه جدید فریم ورک کیک پی اچ پی منتشر شده اما متاسفانه مطالب فارسی برای این نسخه وجود نداره و ندیدم هیچ وبلاگ یا سایتی در مورد این نسخه آموزشی گذاشته باشه، به همین خاطر تصمیم دارم تا جایی که می تونم و وقت وعلمم اجازه میده در مورد این نسخه مطالبی رو بنویسم.</p>
<p>خوب واسه شروع میریم سراغ نصب این فریم ورک محبوب، برای راه اندازی کیک پی اچ پی ۳ شما نیاز به یک سری پیش نیازها دارید.</p>
<p>نسخه php وب سرور شما باید حداقل ۵٫۵٫۹ باشه و همچنین اکستنشن های mbstring و intl  برای php فعال باشند.</p>
<p>اگر از xampp یا wamp استفاده می کنید معمولا mbstring به صورت پیش فرض نصب هست اما intl رو باید فعال کنید.<br />
در xampp برای فعال کردن intl فایل تنظیمات php.ini رو باز کنید و به دنبال خط extension=php_intl.dll بگردید و این خط رو از حالت comment در بیارید (کاراکتر ; رو از ابتدای اون خط بردارید) و وب سرور رو راه اندازی مجدد کنید.<br />
برای wamp هم یک سری فایل با نام های icu*.dll  در مسیر  {C:\wamp\bin\php\php{version  وجود داره که باید یک کپی از این فایل ها رو در مسیر  C:\wamp\bin\apache\apache{version}\bin قرار بدید و بعد وب سرور رو restart کنید.</p>
<p>برای کار با دیتابیس های مختلف کیک از اکستنشن pdo استفاده میکنه پس حواستون باشه که این اکستنشن هم باید فعال باشه.</p>
<p><span id="more-345"></span></p>
<p>کیک پی اچ پی تو این نسخه پیشنهاد کرده که از ابزار composer که برای کنترل نیازمندیهای برنامه در php نسخه ۵٫۳ به بالا هست استفاده کنید(<a href="https://getcomposer.org/" target="_blank">اطلاعات بیشتر در سایت این ابزار</a>) .</p>
<p>برای نصب composer تو ویندوز، به راحتی میتونید از طریق فایل exe ای که در اختیارتون قرار میده، این ابزار رو نصب کنید .</p>
<p>حالا برای نصب cakephp به مسیر فایل اجرایی composer برید و دستور زیر رو اجرا کنید (مثلا فایل اجرایی کامپوزر تو سیستم من تو این آدرس هست C:\ProgramData\ComposerSetup\bin)</p>
<pre class="brush:php">php composer.phar create-project --prefer-dist cakephp/app my_app_name</pre>
<p>به جای my_app_name مسیر و نام پروژه تون رو بنویسید مثلا c:\xampp\htdocs\cakephp3_app .</p>
<p>پس از اجرای این دستور، composer شروع به دانلود کیک و همچنین کتابخونه های موردنیاز برای اجرای کیک میکنه و اون ها رو برای شما نصب میکنه و بسته به سرعت اینترنت شما ممکنه کمی طول بکشه . پس از اتمام این مرحله شما یک نسخه از فریم ورک cakephp رو در اختیار دارید و میتونید شروع به توسعه پروژه خود کنید.</p>
<p>همچنین برای اینکه هر بار برای ساخت پروژه جدید کیک و یا یه طور کلی کار با composer مجبور نباشید به مسیر نصب اون برید بهتر هست که فرمان composer رو به صورت سرتاسری تو سیستمتون تعریف کنید و تو هر جایی که میخواید پروژه جدید بسازید دستور زیر رو اجرا کنید</p>
<pre class="brush:php">composer create-project --prefer-dist cakephp/app my_app_name</pre>
<p>برای تعریف فرمان composer به صورت سرتاسری، تو ویندوز ۸٫۱ روی Mycomputer راست کلیک کنید و properties رو انتخاب کنید، تو پنجره باز شده از سمت چپ روی گزینه advanced system settings کلیک کنید و تو پنجره جدیدی که باز میشه در انتهای پنجره روی دکمه Environment Variables کلیک کنید و از بخش system variables گزینه path رو پیدا کنید و روی edit کلیک کنید، در انتهای مقدار این متغیر اگر ; وجود نداره یک ; بزارید و بعد مسیر فایل اجرایی کامپوزر (C:\ProgramData\ComposerSetup\bin) رو به اون اضافه کنید، دقت کنید آدرس هایی که تو این قسمت قرار دارند باید با ; از هم تفکیک شده باشند.</p>
<p>&nbsp;</p>
<p>تو پست های بعد سعی میکنم بیشتر در مورد نسخه ۳ فریم ورک cakephp بنویسیم، امیدوار این مطلب براتون مفید بوده باشه، موفق باشید</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1394/12/13/%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c-3-%d8%b4%d8%b1%d9%88%d8%b9-%da%a9%d8%a7%d8%b1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>نصب کیک پی اچ پی روی هاست</title>
		<link>http://webnevis.net/1392/06/30/%d9%86%d8%b5%d8%a8-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c-%d8%b1%d9%88%db%8c-%d9%87%d8%a7%d8%b3%d8%aa/</link>
		<comments>http://webnevis.net/1392/06/30/%d9%86%d8%b5%d8%a8-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c-%d8%b1%d9%88%db%8c-%d9%87%d8%a7%d8%b3%d8%aa/#comments</comments>
		<pubDate>Sat, 21 Sep 2013 17:32:07 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[فریم ورک کیک پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=322</guid>
		<description><![CDATA[روش مناسب برای نصب فریم ورک کیک  پی اچ پی روی هاست قرار دادن هسته کیک و برنامه ای که نوشتیم در پوشه ای خارج از فولدر public_html یا همون پوشه root سایت مون هست .برای این کار محتویات فولدر webroot رو در شاخه اصلی هاستمون باید قرار بدیم و در فایل index.php سه ثابت (define) [...]]]></description>
				<content:encoded><![CDATA[<p>روش مناسب برای نصب فریم ورک کیک  پی اچ پی روی هاست قرار دادن هسته کیک و برنامه ای که نوشتیم در پوشه ای خارج از فولدر public_html یا همون پوشه root سایت مون هست .برای این کار محتویات فولدر webroot رو در شاخه اصلی هاستمون باید قرار بدیم و در فایل index.php سه ثابت (define) با نام های ROOT ، APP_DIR و CAKE_CORE_INCLUDE_PATH رو مقداری دهی کنیم .</p>
<p>ثابت ROOT باید حاوی آدرس پوشه ای باشه که در برگیرنده برنامه ما هست .</p>
<p>ثابت APP_DIR تعیین کننده نام پوشه برنامه ما هست که به صورت پیش فرض این پوشه app نام داره و می تونیم تغییرش بدیم.</p>
<p>ثابت CAKE_CORE_INCLUDE_PATH هم باید شامل آدرس پوشه در برگیرنده هسته کیک باشه .</p>
<p>به عنوان مثال فرض کنید نام پوشه برنامه ای که نوشتیم ، webnevis_app هست و ما این پوشه رو در آدرس  home/payam/webnevis.net/adsmarket.ir/private قرار دادیم و همچنین هسته کیک (پوشه lib) رو هم در همین آدرس قرار دادیم بنابراین مقادیر این سه ثابت به شکل زیر خواهد بود :</p>
<pre class="brush:php">if (!defined('ROOT')) {
	define('ROOT', '/home/payam/domains/webnevis.net/private');
}

if (!defined('APP_DIR')) {
	define('APP_DIR', 'webnevis_app');
}

define('CAKE_CORE_INCLUDE_PATH', '/home/payam/domains/webnevis.net/private/lib');</pre>
<p>این روشی که با هم بررسی کردیم یکی از روش های نصب کیک هست ، برای اطلاعات بیشتر می تونید <a href="http://book.cakephp.org/2.0/en/installation.html" target="_blank">این </a>لینک رو مطالعه کنید.</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1392/06/30/%d9%86%d8%b5%d8%a8-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c-%d8%b1%d9%88%db%8c-%d9%87%d8%a7%d8%b3%d8%aa/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>اشکال زدایی برنامه در کیک پی اچ پی</title>
		<link>http://webnevis.net/1392/03/29/%d8%a7%d8%b4%da%a9%d8%a7%d9%84-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://webnevis.net/1392/03/29/%d8%a7%d8%b4%da%a9%d8%a7%d9%84-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Tue, 18 Jun 2013 19:58:17 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=306</guid>
		<description><![CDATA[موقع توسعه یک برنامه مسلما بارها پیش آمده که بخواهید برنامه ای که نوشتید را trace کنید و یا مقادیری که به صورت داینامیک داخل یک آرایه ذخیره کردید را مشاهده نمایید و کارهایی از این قبیل انجام دهید . کیک پی اچ پی توابع و کلاس هایی را برای این کار در نظر گرفته [...]]]></description>
				<content:encoded><![CDATA[<p>موقع توسعه یک برنامه مسلما بارها پیش آمده که بخواهید برنامه ای که نوشتید را trace کنید و یا مقادیری که به صورت داینامیک داخل یک آرایه ذخیره کردید را مشاهده نمایید و کارهایی از این قبیل انجام دهید .<br />
کیک پی اچ پی توابع و کلاس هایی را برای این کار در نظر گرفته که بسیار مفید و سودمند هستند و قطعا استفاده و به کاربردن انها کمک بسیاری در روند توسعه یک برنامه خواهد کرد.</p>
<p>مهم ترین نکته ای که باید به ان توجه داشت این هست که در تنظیمات کیک،که در آدرس Core/config.php قرار دارد ، مقدار debug برابر با ۲ باشد تا تمام خطاها و اشکالات برنامه ، کوئری هایی که اجرا می شوند و همچنین خروجی های توابع و کلاس های مربوط به debugging به صورت کامل هنگام اجرای برنامه به ما نمایش داده شود و cache های ایجاد شده رفرش گردند.</p>
<pre class="brush:php"> Configure::write('debug', 2);</pre>
<p>به این ویژگی دو مقدار ۰ و ۱ هم می توانیم اختصاص دهیم که مقدار ۱ مانند همان حالت مقدار ۲ هست اما محدودیتهایی دارد و مقدار ۰ برای زمانیست که برنامه ما به صورت کامل نوشته و تست شده و آماده ارائه به کاربران می باشد.</p>
<p><span id="more-306"></span></p>
<p><strong>تابع debug</strong><br />
اولین و ساده ترین تابعی که کیک در اختیار ما قرار داده ، تابع debug هست ، که یک تابع سراسریست و در بخش های مختلف برنامه برای نمایش مقادیر متغیرها می توانیم از آن استفاده کنیم . prototype و یا امضای این تابع به صورت زیر هست :</p>
<pre class="brush:php">debug(mixed $var, boolean $showHtml = null, $showFrom = true)</pre>
<p>اولین پارامتر این تابع ، متغیری هست که قصد بررسی آن را داریم .<br />
پارامتر showHtml به صورت boolean هست و به صورت پیش فرض مقدار true را دارد،اگر کدهای html در متغیر وجود داشته باشد به جای اجرا ، نمایش داده می شود و پارامتر سوم نیز که به صورت پیش فرض true ست نام فایل و خطی که تابع debug را فراخوانی کرده،در خروجی نمایش می دهد .</p>
<p><strong>کلاس Debugger</strong></p>
<p>کلاس کاربردی و مفیدی هست که از نسخه ۱٫۲ به بعد تعریف شده و متدهای مختلفی برای ارزیابی کدهایی که نوشتیم در اختیارمان قرار می دهد، که در زیر برخی از کاربردی ترین آنها را بررسی میکنیم.همچنین متدهای این کلاس به صورت استاتیک هستند و نیازی به نمونه سازی از کلاس نیست و به صورت زیر قابل دسترس هستند :</p>
<pre class="brush:php"> Debugger::methodName();</pre>
<p>- متد dump<br />
متغیری که به عنوان وررودی دریافت کرده است ، خیلی حرفه ای تر و واضح تر نسبت به تابع debug برایمان تشریح می کند .</p>
<pre class="brush:php">//simple array
$arr=array(1,2,3);
Debugger::dump($arr);

//outputs
array(
	(int) 0 =&gt; (int) 1,
	(int) 1 =&gt; (int) 2,
	(int) 2 =&gt; (int) 3
)</pre>
<p>- متد log<br />
این متد تقریبا شبیه به متد dump هست اما با این تفاوت که خروجی خودش را به همراه یک سری اطلاعات مانند تاریخ و زمان اجرا ، stack trace اجرای برنامه تا خط مربوط به فراخوانی این متد را در شاخه tmp/logs در یک فایل متنی به نام debug ذخیره می کند . برای اجرای صحیح این متد دایرکتوری tmp/logs باید writable باشد .</p>
<p>- متد trace<br />
با فراخوانی این متد در هر بخش از کدهای برنامه stack trace برنامه بازگردانده می شوده که می توانیم با استفاده از تابع print_r خود پی اچ پی و یا تابع pr که کیک برای چاپ آرایه ها به صورت خواناتر در اختیارمان قرار داده ، آن را در خروجی چاپ کنیم .</p>
<pre class="brush:php">pr(Debugger::trace());

//outputs
PostsController::index() - APP/Controller/DownloadsController.php, line 48
Dispatcher::_invoke() - CORE/lib/Cake/Routing/Dispatcher.php, line 265
Dispatcher::dispatch() - CORE/lib/Cake/Routing/Dispatcher.php, line 237
[main] - APP/webroot/index.php, line 84</pre>
<p>- متد getType<br />
این متد همانطور که از نامش پیداست نوع (type) متغیری که به آن پاس داده شده را بر می گرداند و در صورتی که یک شی (object) به عنوان ورودی به آن داده شود نام کلاس آن شی رادر اختیارمان قرار می دهد .</p>
<p>- متد excerpt<br />
گاهی وقت ها شاید نیازمند این باشید که بخشی از کدهای هسته کیک را ببینید تا روند اجرای کدها را بهتر درک کنید . با استفاده از این متد می توان بخشی از کدهای یک فایل از هسته کیک را استخراج و بررسی کرد .</p>
<pre class="brush:php">Debugger::excerpt($file, $line, $context)</pre>
<p>اولین وردی آدرس فایلی است که قصد داریم بخشی از کدهای آن را بررسی کینم<br />
دومین ورودی شماره خط شروع<br />
و سومین پارامتر تعداد خطهایی که قصد داریم بازگردانده شوند (از صفر شروع می شود و نتیجه به صورت آرایه بازگردانده می شود)</p>
<pre class="brush:php">pr(Debugger::excerpt(ROOT . DS . 'index.php', 1, 7));</pre>
<p>برای اطلاعات بیشتر و مشاهده مثال های کاملتر در مورد این کلاس می توانید <a href="http://book.cakephp.org/2.0/en/development/debugging.html#using-the-debugger-class" target="_blank">اینجا </a>را مطالعه نمایید.</p>
<p>&nbsp;</p>
<p><strong>کلاس CakeLog </strong></p>
<p>log کردن یکی از روش های مرسوم برای خطایابی و اشکال زدایی برنامه هست ، در کیک برای این منظور کلاس CakeLog در نظر گرفته شده که در ابتدا باید این کلاس را در برنامه بارگذاری و سپس با استفاده از متد write اقدام به نوشتن log مورد نظرمان کنیم .</p>
<pre class="brush:php">//Config/bootstrap.php
App::uses('CakeLog', 'Log');

//Anywhere in your application
CakeLog::write('debug', 'successfully!!');</pre>
<p>توجه داشته باشید که در ابتدای اجرای کیک فایل bootstarp.php اجرا می شود بنابراین محل مناسبی برای بارگذاری کلاس cakeLog هست تا در هر نقطه از برنامه بتوانیم از این کلاس استفاده کنیم همچنین همانطور که فبلا اشاره کردم فایل debug در شاخه tmp/logs قرار دارد .</p>
<p>&nbsp;</p>
<p><strong>Debug Kit<br />
</strong></p>
<p>debug kit پلاگینی بی نظیر و حرفه ای برای اشکال زدایی application مان هست  و به نظرم باید ابزار همیشگی یک آشپز کیک پی اچ پی باشد .<br />
این پلاگین اطلاعات سودمند و مفیدی همچون لیست کوئری های اجرا شده ، لیست request ها ، sesssion های ثبت شده ، لیست متغیرهای پاس داده شده به view و &#8230; در دسترس برنامه نویس قرار میدهد که مطئنا برای یک توسعه دهنده مفید خواهد بود .<br />
از طریق لینک <a href="https://github.com/cakephp/debug_kit">https://github.com/cakephp/debug_kit</a> قابل دسترس هست.<br />
برای نصب مراحل زیر را دنبال کنید :<br />
- پس از دانلود ، پلاگین رو از حالت فشرده در بیارید و به DebugKit تغییر نام بدید.<br />
- پلاگین رو به پوشه Plugin در برنامه تان منتقل کنید.<br />
- در فایل bootstrap.php پلاگین را لود کنید .</p>
<pre class="brush:php">CakePlugin::load('DebugKit');</pre>
<p>- در فایل AppController.php به لیست کامپوننت ها toolbar پلاگین را اضافه کنید .</p>
<pre class="brush:php">public $components = array('DebugKit.Toolbar');</pre>
<p>- از داشتن یک تولبار حرفه ای در هنگام توسعه برنامه تان لذت ببرید &#8230; !</p>
<p>&nbsp;</p>
<p>موفق و پیروز باشید &#8230;</p>
<p>&nbsp;</p>
<p>منبع : <a href="http://book.cakephp.org/2.0/en/development/debugging.html" target="_blank">http://book.cakephp.org/2.0/en/development/debugging.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1392/03/29/%d8%a7%d8%b4%da%a9%d8%a7%d9%84-%d8%b2%d8%af%d8%a7%db%8c%db%8c-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>تغییر قوانین اعتبارسنجی به صورت پویا در کیک پی اچ پی</title>
		<link>http://webnevis.net/1392/03/27/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%82%d9%88%d8%a7%d9%86%db%8c%d9%86-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d8%b3%d9%86%d8%ac%db%8c-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://webnevis.net/1392/03/27/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%82%d9%88%d8%a7%d9%86%db%8c%d9%86-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d8%b3%d9%86%d8%ac%db%8c-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 16:59:29 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=300</guid>
		<description><![CDATA[یکی از امکانات جدید اضافه شده در نسخه ۲٫۲ از کیک پی اچ پی امکان تغییر قوانین تعریف شده در Model به صورت داینامیک از طریق متد validator که در Model پیاده سازی شده است می باشد. در این پست به بررسی این ویژگی جدید می پردازیم . در ابتدای کار فرض می کنیم در [...]]]></description>
				<content:encoded><![CDATA[<p>یکی از امکانات جدید اضافه شده در نسخه ۲٫۲ از کیک پی اچ پی امکان تغییر قوانین تعریف شده در Model به صورت داینامیک از طریق متد validator که در Model پیاده سازی شده است می باشد. در این پست به بررسی این ویژگی جدید می پردازیم .</p>
<p>در ابتدای کار فرض می کنیم در model قوانین زیر رو تعریف کردیم :</p>
<pre class="brush:php">class User extends AppModel{

	public $validate = array(
		'username'=&gt;array(
			'rule-1'=&gt;array(
				'rule'=&gt;'notEmpty',
				'required'=&gt;TRUE,
				'message'=&gt;'لطفا نام کاربری خود را وارد کنید'
			),
			'rule-2'=&gt;array(
				'rule'=&gt;'isUnique',
				'message'=&gt;'نام کاربری وارد شده تکراری است',
				'on'=&gt;'create'
			),
		),
		'password'=&gt;array(
			'rule'=&gt;'notEmpty',
			'required'=&gt;TRUE,
			'message'=&gt;'لطفا رمزعبور خود را وارد کنید'
		),
	);

}</pre>
<p><span id="more-300"></span></p>
<p><strong>اضافه کردن قانون جدید :</strong><br />
برای اضافه کردن قانون جدید از متد add استفاده می کنیم</p>
<pre class="brush:php">$this-&gt;validator()-&gt;add('password','rule-2',array(
		'rule'=&gt;'alphaNumeric',
		'message'=&gt;'رمزعبور تنها باید شامل حروف و اعداد باشد'	
));</pre>
<p>همچنین می توانیم از روش method chaining استفاده کنیم و متد add رو چندین بار فراخوانی کنیم .</p>
<pre class="brush:php">$this-&gt;validator()
	-&gt;add('password','rule-2',array(
		'rule'=&gt;'alphaNumeric',
		'message'=&gt;'رمزعبور تنها باید شامل حروف و اعداد باشد'
	))
	-&gt;add('password','rule-3',array(
		'rule'=&gt;array('minLength',6)
		'message'=&gt;'رمزعبور حداقل باید شامل ۶ کاراکتر باشد'
	));</pre>
<p>به جای روش بالا می توانیم به صورت زیر هم عمل کنیم و قوانین جدید رو به صورت آرایه به عنوان پارامتر دوم به متد پاس بدیم</p>
<pre class="brush:php">$this-&gt;validator()
	-&gt;add('password',array(
		'rule-2'=&gt;array(
		'rule'=&gt;'alphaNumeric',
		'message'=&gt;'رمزعبور تنها باید شامل حروف و اعداد باشد'
		),
		'rule-3'=&gt;array(
			'rule'=&gt;array('minLength',6)
			'message'=&gt;'رمزعبور حداقل باید شامل ۶ کاراکتر باشد'
		)
	));</pre>
<p><strong>ویرایش قوانین موجود :</strong></p>
<p>برای مثال قانون rule-2 از فیلد password  رو می خواهیم ویرایش کنیم</p>
<pre class="brush:php">$this-&gt;validator()-&gt;getField('password')-&gt;setRule('rule-2',array(
		'rule'=&gt;'numeric',
		'message'=&gt;'رمزعبور باید تنها شامل اعداد باشد'
	)
);</pre>
<p>و برای تغییر تمامی قوانین تعریف شده برای یک فیلد با استفاده از متد setRules داریم :</p>
<pre class="brush:php">$this-&gt;validator()-&gt;getField('password')-&gt;setRules(array(
		'required'=&gt;array(
			'rule'=&gt;'notEmpty',
			'required'=&gt;TRUE,
			'message'=&gt;'رمزعبور خود را وارد کنید'
		),
		'length'=&gt;array(
			'rule'=&gt;array('between',6,12),
			'message'=&gt;'رمزعبور باید شامل حداقل ۶ و حداکثر ۱۲ کاراکتر باشد'
		)
	)
);</pre>
<p>همچنین اگر فقط بخوایم یک بخش از قانون تعریف شده رو تغییر بدیم :</p>
<pre class="brush:php">$this-&gt;validator()-&gt;getField('password')-&gt;getRule('length')-&gt;message='رمزعبور وارد شده معتبر نیست';</pre>
<p><strong>حذف قوانین :</strong></p>
<p>قطعه کد زیر قوانین تعریف شده برای فیلد password رو به طور کلی پاک میکنه .</p>
<pre class="brush:php">$this-&gt;validator()-&gt;remove('password');</pre>
<p>و کد زیر قانون length رو از بین قوانین تعریف شده برای فیلد password حذف میکنه</p>
<pre class="brush:php">$this-&gt;validator()-&gt;remove('password','length');</pre>
<p>اگر از کنترلر بخواهیم به این متد دسترسی داشته باشیم،برای مثال در کدهایی که توی این پست تعریف کردیم،به شکل زیر عمل می کنیم</p>
<pre class="brush:php">$this-&gt;User-&gt;validator()-&gt;remove('password','length');

//other sample
$this-&gt;User-&gt;validator()-&gt;getField('password')-&gt;setRules(array(
		'required'=&gt;array(
			'rule'=&gt;'notEmpty',
			'required'=&gt;TRUE,
			'message'=&gt;'رمزعبور خود را وارد کنید'
		)
	)
);</pre>
<p>امیدوارم این پست مفید بوده باشه ، موفق باشید .</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1392/03/27/%d8%aa%d8%ba%db%8c%db%8c%d8%b1-%d9%82%d9%88%d8%a7%d9%86%db%8c%d9%86-%d8%a7%d8%b9%d8%aa%d8%a8%d8%a7%d8%b1%d8%b3%d9%86%d8%ac%db%8c-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>کار با element ها در کیک پی اچ پی</title>
		<link>http://webnevis.net/1390/04/29/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-element-%d9%87%d8%a7-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://webnevis.net/1390/04/29/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-element-%d9%87%d8%a7-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 06:09:55 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[کیک پی اچ پی - CakePHP]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=255</guid>
		<description><![CDATA[در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و &#8230; ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از element ها استفاده می کنیم [...]]]></description>
				<content:encoded><![CDATA[<p>در صفحات مختلف یک وب سایت معمولا بخش هایی وجود دارند که ثابت هستند و در مکان های مختلف تکرار می شوند ، مانند بلوک آخرین مطالب ، لوگوهای دوستان ، فرم خبرنامه و &#8230; ، در این مواقع برای جلوگیری از تکرار کد و راحت تر شدن کار از element ها استفاده می کنیم .</p>
<p>برای ایجاد یک فایل element در کیک پی اچ پی وارد پوشه elements از بخش views شوید و یک فایل با نام دلخواه و پسوند ctp. ایجاد کنید سپس کدهای مد نظرتان را داخل آن وارد کنید ، برای نمایش element مورد نظرتان در سایر فایلهای بخش view هم از دستور زیر استفاده کنید :</p>
<pre class="brush:php">echo $this-&gt;element('element_name');</pre>
<p>برای آشنایی بیشتر با این بخش یک element ایجاد می کنیم که آخرین مطالب موجود در پایگاه داده را نمایش دهد.</p>
<p><span id="more-255"></span></p>
<p>در مرحله اول یک متد در کنترلر مربوط به مطالب تعریف می کنیم که آخرین مطالب را به ما برگرداند</p>
<pre class="brush:php">class PostsController extends AppController
{

	var $name='Posts';

	function index()
	{
		$posts=$this-&gt;Post-&gt;find('all',array('limit'=&gt;10));
		if(isset($this-&gt;params['requested']))
		{
			return $posts;
		}
		else
		{
			$this-&gt;set('posts',$posts);
		}
	}

}</pre>
<p>در اینجا متد index از کنترلر posts رو به شکلی تعریف کردیم که وقتی با استفاده از متد requestAction این متد رو درخواست کردیم مطالب خوانده شده از دیتابیس return شود تا در فایل مربوط به element بتوانیم مورد استفاده قرار دهیم.</p>
<p>حالا در مسیر views/elements یک فایل با نام last_posts.ctp ایجاد کنید و کدهای زیر را داخل آن وارد کنید</p>
<pre class="brush:php">


<h3>Last Posts</h3>

&lt;?php

$posts=$this->requestAction('posts/index');

if(is_array($posts)) :

?&gt;
<ul>

		&lt;?php foreach($posts as $post) : ?&gt;
		<li>&lt;?php echo $this->Html->link($post['Post']['title'],array('controller'=>'posts','action'=>'view',$post['Post']['id'])); ?&gt;</li>
		&lt;?php endforeach; ?&gt;
		
</ul>
&lt;?php endif; ?&gt;

</pre>
<p>حالا هر جا که می خواهید این element رو نمایش بدید از دستور زیر استفاده کنید </p>
<pre class="brush:php" >

echo $this->element('last_posts');

</pre>
<p>موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1390/04/29/%da%a9%d8%a7%d8%b1-%d8%a8%d8%a7-element-%d9%87%d8%a7-%d8%af%d8%b1-%da%a9%db%8c%da%a9-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>نمایش آمار بازدید روزانه با PHP</title>
		<link>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/</link>
		<comments>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/#comments</comments>
		<pubDate>Sun, 05 Sep 2010 17:34:30 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[پایگاه داده mysql]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=223</guid>
		<description><![CDATA[اسکریپتی که توی این پست قصد آموزشش رو دارم ، اسکریپت نمایش آمار بازدید امروز ، دیروز و کل بازدید ها هست که توی اکثر سایت ها به اون نیاز هست و مطمئنا به دردتون می خوره. برای شروع کار یک جدول با نام counter با فیلدهای today,yesterday,total,last_visit بسازید. CREATE TABLE IF NOT EXISTS `counter` [...]]]></description>
				<content:encoded><![CDATA[<p>اسکریپتی که توی این پست قصد آموزشش رو دارم ، اسکریپت نمایش آمار بازدید امروز ، دیروز و کل بازدید ها هست که توی اکثر سایت ها به اون نیاز هست و مطمئنا به دردتون می خوره.<br />
برای شروع کار یک جدول با نام counter با فیلدهای today,yesterday,total,last_visit بسازید.</p>
<pre class="brush:php">CREATE TABLE IF NOT EXISTS `counter` (
  `today` INT(11) NOT NULL,
  `yesterday` INT(11) NOT NULL,
  `total` varchar(11) NOT NULL,
  `last_visit` varchar(20) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
</pre>
<p>و یک سطر جدید درج کنید .</p>
<pre class="brush:php">INSERT INTO `counter` (`today`, `yesterday`, `total`, `last_visit`) VALUES
('0', '0', '0', '');
</pre>
<p>نحوه کار به این شکل هست که ابتدا مقدار فیلد last_visit رو که مربوط به تاریخ آخرین بازدید انجام شده از سایت هست رو از دیتابیس می خونیم ، بعد با استفاده از تابع ()date تاریخ فعلی رو بدست میاریم  و با مقدار موجود در last_visit مقایسه می کنیم ، در صورتی که این دو تاریخ باهم برابر باشند مقدار فیلد today رو یکی افزایش میدیم در غیر این صورت متوجه میشیم که آخرین بازدید در روز دیگه ای انجام شده که ما اونو روز قبل در نظر می گیریم و مقدار فیلد yseterday رو برابر با today قرار میدیم و مقدار فیلد today رو مساوی با یک می زاریم و تاریخ آخرین بازید رو هم به روز می کنیم .<br />
توجه داشته باشید که در هر دو حالتی که پیش میاد مقدار فیلد total رو هم یکی افزایش میدیم .<br />
در مرحله آخر هم مقادیر موجود در دیتابیس رو select و چاپ می کنیم .</p>
<p>۱ &#8211; خواندن اطلاعات از دیتابیس</p>
<pre class="brush:php">$con=mysql_connect('localhost','root','');
if(!$con)
	die('error in connect to db');
$select_db=mysql_select_db('test');
if(!$select_db)
	die('error in select db');
$query=mysql_query('select last_visit from counter');
$field=mysql_fetch_array($query);
</pre>
<p>برای آشنایی بیشتر با توابع دیتابیس و کار با اون می تونید <a href="http://webnevis.net/1387/11/18/connect-to-mysql-by-php/" target="_blank">این</a> و <a href="http://webnevis.net/1387/12/28/reading-data-from-mysql-by-php/" target="_blank">این</a> پست رو بخونید .</p>
<p><span id="more-223"></span></p>
<p>۲ &#8211; مقایسه تاریخ آخرین بازدید با تاریخ جاری</p>
<pre class="brush:php">$now=date('Y-m-d');
if($field['last_visit']==$now)
	$query='update counter set today=today+1,total=total+1';
else
	$query="update counter set yesterday=today,today=1,last_visit='$now',total=total+1";
mysql_query($query);
</pre>
<p>3 &#8211; نمایش آمار<br />
برای نمایش مقادیر ذخیره شده هم دوباره از دیتابیس یه select انجام میدیم و مقادیر رو چاپ می کنیم .</p>
<pre class="brush:php">$query=mysql_query('select * from counter');
$field=mysql_fetch_array($query);
echo "

	بازدیدهای امروز : $field[today] 

	بازدیدهای دیروز : $field[yesterday] 

	کل بازدیدها : $field[total]

";
</pre>
<p>کد کامل اسکریپت :</p>
<pre class="brush:php">//read last_visit from db
$con=mysql_connect('localhost','root','');
if(!$con)
	die('error in connect to db');
$select_db=mysql_select_db('test');
if(!$select_db)
	die('error in select db');
$query=mysql_query('select last_visit from counter');
$field=mysql_fetch_array($query);
//Compare dates
$now=date('Y-m-d');
if($field['last_visit']==$now)
	$query='update counter set today=today+1,total=total+1';
else
	$query="update counter set yesterday=today,today=1,last_visit='$now',total=total+1";
mysql_query($query);
//display counter
$query=mysql_query('select * from counter');
$field=mysql_fetch_array($query);
echo "

	بازدیدهای امروز : $field[today] 

	بازدیدهای دیروز : $field[yesterday] 

	کل بازدیدها : $field[total]

";
</pre>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/06/14/statistics-show-daily-with-php/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>اعتبارسنجی اطلاعات در کیک پی اچ پی</title>
		<link>http://webnevis.net/1389/01/29/cakephp-validation/</link>
		<comments>http://webnevis.net/1389/01/29/cakephp-validation/#comments</comments>
		<pubDate>Sun, 18 Apr 2010 11:29:03 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=209</guid>
		<description><![CDATA[یکی از مهم ترین بخش های هر برنامه بررسی و اعتبارسنجی اطلاعات دریافتی از کاربر هست در واقع با این کار برنامه نویس مطمئن خواهد شد که کاربر داده ای را که مد نظر اوست وارد کرده و با خیال راحت این اطلاعات را مورد استفاده قرار می دهد . برای چک کردن مقادیر در [...]]]></description>
				<content:encoded><![CDATA[<p>یکی از مهم ترین بخش های هر برنامه بررسی و اعتبارسنجی اطلاعات دریافتی از کاربر هست در واقع با این کار برنامه نویس مطمئن خواهد شد که کاربر داده ای را که مد نظر اوست وارد کرده و با خیال راحت این اطلاعات را مورد استفاده قرار می دهد .<br />
برای چک کردن مقادیر در کیک پی اچ پی باید تسلط و آشنایی خوبی با آرایه ها داشته باشید تا هنگام اعتبارسنجی های پیچیده مغزتون هنگ نکنه و به راحتی بتونید کارتون رو جلو ببرید . کدهای مربوط به اعتبارسنجی اطلاعات را باید در کلاس مربوط به  model بنوسید و با تعریف یک خصوصیت به نام validate و اختصاص دادن یک آرایه چند بعدی به آن ، نوع داده های مورد نظرتان را مشخص  نمایید  .</p>
<p>در ساده ترین حالت می تونید برای فیلدهای موردنظرتون که توی جدول تعریف کردید و مقدارش براتون مهم هست یک نوع رو مشخص نمایید</p>
<pre class="brush:php">class User extends AppModel{

	var $name='User';

	var $validate=array(
	'username'=&gt;'alphaNumeric',
	'password'=&gt;'alphaNumeric',
	'email'=&gt;'email'
	);
}</pre>
<p>در این حالت هنگام ذخیره و یا بروز رسانی اطلاعات مقادیر تعیین شده چک می شوند و در صورت مغایرت پیغام مناسب نمایش داده می شود .</p>
<p><span id="more-209"></span></p>
<p>همچنین شما می تونید پیغام هایی که برای هر قسمت نمایش داده می شوند رو تعیین کنید ، برای این کار به شکل زیر عمل کنید</p>
<pre class="brush:php">class User extends AppModel{

	var $name='User';

	var $validate=array(
	'username'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'نام کاربری معتبر نیست'),
	'password'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'رمز عبور معتبر نیست'),
	'email'=&gt;array('rule'=&gt;'email','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}</pre>
<p>کیک پی اچ پی به صورت پیش فرض یکسری pattern برای چک کردن ایمیل ، ip، تاریخ ،زمان ، کد پستی ، آدرس اینترنتی و سایر مقادیر داره که برای مشاهده کامل این pattern ها می تونید <a href="http://book.cakephp.org/view/134/Core-Validation-Rules" target="_blank">اینجا </a>رو ببینید.</p>
<p>در کیک پی اچ پی این امکان هم وجود داره که شما خودتون یک pattern خاص بنویسید تا مقدار فیلد بر اساس اون چک بشه برای این کار کافیه که فقط pattern دلخواه تون رو به فیلد مورد نظر نسبت بدید</p>
<pre class="brush:php">class User extends AppModel
{
	var $name='User';
	var $useTable='users';
	var $validate=array(
	'username'=&gt;array('rule'=&gt;'/[a-z0-9\-]{3,15}/i','message'=&gt;'نام کاربری معتبر نیست'),
	'password'=&gt;array('rule'=&gt;'/[a-z0-9\-]{6,20}/i','message'=&gt;'رمز عبور معتبر نیست'),
	'email'=&gt;array('rule'=&gt;'/[a-z0-9._\-+]+@[a-zA-Z0-9.\-]+.[a-zA-Z.]+/i','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}</pre>
<p>برای اینکه یک فیلد رو از چند نظر مورد بررسی قرار بدید کافیه که یک آرایه چند بعدی برای اون فیلد تعریف کنید</p>
<pre class="brush:php">class User extends AppModel
{
	var $name='User';
	var $validate=array(
		'username'=&gt;array(
			'alphaNumeric'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'نام کاربری معتبر نیست'),
			'maxLength'=&gt;array('rule'=&gt;array('maxLength',5),'message'=&gt;'حداکثر طول نام کاربری باید ۵ کاراکتر باشد')
		),
		'password'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'رمز عبور معتبر نیست'),
		'email'=&gt;array('rule'=&gt;'email','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}</pre>
<p>برای اطلاعات بیشتر در این مورد <a href="http://book.cakephp.org/view/133/Multiple-Rules-per-Field" target="_blank">این </a>صفحه رو بخونید.</p>
<p>همچنین برای تعیین اینکه یک الگو یا pattern در زمان افزودن رکورد چک بشه یا بروزرسانی رکورد می تونید به شکل زیر عمل کنید</p>
<pre class="brush:php">
class User extends AppModel
{
	var $name='User';
	var $validate=array(
		'username'=&gt;array(
			'alphaNumeric'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'نام کاربری معتبر نیست','on'=&gt;'create'),
			'maxLength'=&gt;array('rule'=&gt;array('maxLength',5),'message'=&gt;'حداکثر طول نام کاربری باید ۵ کاراکتر باشد','on'=&gt;'update')
		),
		'password'=&gt;array('rule'=&gt;'alphaNumeric','message'=&gt;'رمز عبور معتبر نیست','on'=&gt;'update'),
		'email'=&gt;array('rule'=&gt;'email','message'=&gt;'پست الکترونیکی معتبر نیست')
	);
}
</pre>
<p>این ها فقط چند مثال برای آشنایی شما با نحوه اعتبار سنجی اطلاعات در کیک پی اچ پی بود و بیشتر سعی کردم مهم ترین موارد رو بگم ، برای اینکه تسلط کاملی بر این موضوع پیدا کنید توصیه می کنم که حتما <a href="http://book.cakephp.org/view/125/Data-Validation" target="_blank">مستندات </a>خود کیک که کامل و گویا هست رو بخونید و <a href="http://lemoncake.wordpress.com/2007/07/03/all-about-validation-in-cakephp-12/" target="_blank">اینجا </a>رو هم یه نگاه بندازید .</p>
<p>موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/01/29/cakephp-validation/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>اصول نام گذاری در CakePHP</title>
		<link>http://webnevis.net/1389/01/07/cakephp-conventions/</link>
		<comments>http://webnevis.net/1389/01/07/cakephp-conventions/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 23:09:26 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[آموزش کیک پی اچ پی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=205</guid>
		<description><![CDATA[کیک پی اچ پی یکی از فریم ورک های محبوب پی اچ پی هست که امکان توسعه سریع برنامه های تحت وب رو به یک توسعه دهنده میده و کلا کار کردن با این فریم ورک خیلی لذت بخش و دوست داشتنی هست به این شرط که توسعه دهنده تسلط تقریبا کاملی بر روی این [...]]]></description>
				<content:encoded><![CDATA[<p>کیک پی اچ پی یکی از فریم ورک های محبوب پی اچ پی هست که امکان توسعه سریع برنامه های تحت وب رو به یک توسعه دهنده میده و کلا کار کردن با این فریم ورک خیلی لذت بخش و دوست داشتنی هست به این شرط که توسعه دهنده تسلط تقریبا کاملی بر روی این فریم ورک داشته باشه .<br />
برای آشنایی بیشتر و شروع کار با این فریم ورک سایت خود <a href="http://cakephp.org/" target="_blank">CakePHP</a> مستندات خوبی رو ارائه کرده همچنین توصیه می کنم که <a href="http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=3&amp;ved=0CBEQFjAC&amp;url=http%3A%2F%2Fnet.tutsplus.com%2Ftutorials%2Fphp%2Fgetting-started-with-cakephp%2F&amp;ei=qV2sS82gBsmr4Qb3kM2vDw&amp;usg=AFQjCNGcZwASfUxdTN-uEaSrP5SK7BlYKg&amp;sig2=uHh2cbN1T5PL7aQtkOkx2Q" target="_blank">این</a> آموزش از سایت <a href="http://net.tutsplus.com/" target="_blank">tutsplus </a>رو هم بخونید ، متاسفانه منبع فارسی تو این زمینه خیلی کم هست و اگر دنبال منابع فارسی برای شروع یادگیری کیک هستید وبلاگ <a href="http://1barnamenevis.ir/" target="_blank">یک برنامه نویس</a> به تازگی یک دوره آموزشی کیک رو شروع کرده ، وبلاگ <a href="http://weblog.alvanweb.com/" target="_blank">الوان وب</a> هم آموزش های خوبی رو تو این زمینه داره و توی <a href="http://forum.cakephp.ir/index.php" target="_blank">انجمن فارسی توسعه کیک</a> هم می تونید مطالب مفیدی رو پیدا کنید .<br />
بعد از نصب و راه اندازی کیک و آشنایی با ساختار اون ، مهم ترین چیزی که باید بدونید اصول نام گذاری کلاس ها و فایل ها توی این فریم ورک هست پس به ادامه مطلب توجه کنید .</p>
<p><strong> Controller  :<br />
</strong>نام controller  باید به صورت جمع باشد و برای نام گذاری کلاس کنترلر کلمه controller رو باید در انتهای نام کلاس اضافه کنید ، برای مثال ProductsController ، اگر تعداد کلمات نام کلاستون بیشتر از یک کلمه باشد باید حرف اول هر کلمه رو به صورت بزرگ بنویسید برای مثال OnlineProductsController  .<br />
فایلی که کلاس کنترلر را در آن می نویسیم همنام با نام کلاس کنترلر هست با این تفاوت که کلمه controller با یک underline از نام کلاس جدا می شود برای مثال اگر اسم کلاس مون ProductsController باشه نام فایل باید products_controller.php باشه و برای نام هایی که بیش از یک کلمه دارند کلمات با یک underline از هم جدا می شوند مثلا اگر اسم کلاسمون به صورت OnlineProductsController باشه اسم فایل کنترلر باید online_products_controller.php باشه ، همچنین توجه داشته باشید که تمام حروف نام فایل به صورت کوچک نوشته می شوند .</p>
<p>فایل : app/controllers/products_controller.php</p>
<pre class="brush:php">class ProductsController extends AppController {
 var $name="Products";
}</pre>
<p><span id="more-205"></span><strong>Model :</strong><br />
نام کلاس model به صورت مفرد نوشته می شود برای مثال Product و اگر تعداد کلمات بیش از یک کلمه باشد حرف اول هر کلمه به صورت بزرگ نوشته می شود برای مثال OnlineProduct ، فایل model همنام با نام کلاس model هست با این تفاوت که اگر تعداد کلمات زیاد باشد باید کلمات با underline از هم جدا شوند برای مثال online_product.php .</p>
<p>فایل : app/models/product.php</p>
<pre class="brush:php">class Product extends AppModel {
 var $name="Product";
}</pre>
<p><strong>Database Table :<br />
</strong>نام جداول دیتابیستون هم باید به صورت جمع باشه و کلمات با استفاده از underline از هم جدا شوند . برای مثال اگر نام model شما product باشه نام جدول باید products باشه .<br />
البته شما می تونید نام جدولتون رو به صورت دلخواه انتخاب کنید که در این صورت باید در کلاس model این موضوع رو مشخص نمایید برای مثال اگر اسم جدول تون رو mytable  انتخاب کنید در این صورت در کلاس model باید خصوصیت useTable رو برابر با mytable قرار بدید.</p>
<pre class="brush:php">class Product extends AppModel {
 var $name="Product";
 var $useTable='mytable';
}</pre>
<p><strong>View :</strong><br />
فایل های مربوط به بخش view در مسیر app/views قرار می گیرند و برای هر controller باید یک پوشه با نام controller ایجاد کنید و سپس برای متد موردنظرتون فایل view رو ایجاد نمایید ، برای مثال اگر نام controller ما ProductsController باشه که دارای متد index  هست ابتدا باید یک پوشه با نام products در مسیر app/views ایجاد نماییم و سپس برای متد مورد نظرمون فایل view رو ایجاد کنیم که در اینجا index.ctp هست ، توجه داشته باشید که فرمت فایل های view باید ctp. باشه .</p>
<p>امیدوارم که براتون مفید باشه ، موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1389/01/07/cakephp-conventions/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ساخت صفحات وب به کمک تابع include در PHP</title>
		<link>http://webnevis.net/1388/09/14/build-web-pages-with-include-in-php/</link>
		<comments>http://webnevis.net/1388/09/14/build-web-pages-with-include-in-php/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 15:31:44 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[پی اچ پی - php]]></category>
		<category><![CDATA[آموزش php]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=199</guid>
		<description><![CDATA[توی این پست قصد دارم نحوه ساخت راحت تر صفحات وب رو برای وب سایت هایی که با استفاده از PHP ایجاد می کنیم آموزش بدم . توی اکثر صفحاتی که برای یک وب سایت ایجاد می کنیم معمولا فقط بخش وسط صفحه تغییر میکنه و header و footer و sidebar به صورت ثابت توی [...]]]></description>
				<content:encoded><![CDATA[<p>توی این پست قصد دارم نحوه ساخت راحت تر صفحات وب رو برای وب سایت هایی که با استفاده از PHP ایجاد می کنیم آموزش بدم .<br />
توی اکثر صفحاتی که برای یک وب سایت ایجاد می کنیم معمولا فقط بخش وسط صفحه تغییر میکنه و header و footer و sidebar به صورت ثابت توی بقیه صفحه ها تکرار میشن به همین خاطر می تونیم این سه قسمت رو توی سه تا فایل جداگانه قرار بدیم و توی هر صفحه ای که ایجاد می کنیم این فایل ها رو include کنیم و سرعت انجام کار رو بالا ببریم و وقتی هم که می خوایم تم سایت رو تغییر بدیم کارمون راحت تر میشه .</p>
<p><span id="more-199"></span></p>
<p>بر فرض اگه کد تمپلیت ما به صورت زیر باشه</p>
<pre class="brush:php">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
    &lt;link type="text/css" rel="stylesheet" href="style.css" media="screen"  /&gt;
    &lt;title&gt;Site Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="main" &gt;
    	&lt;!-- header --&gt;
    	&lt;div id="header" &gt;&lt;/div&gt;
        &lt;div id="menu" &gt;
     		&lt;a href="home.php" &gt;Home&lt;/a&gt;|
            &lt;a href="About.php" &gt;About&lt;/a&gt;|
            &lt;a href="Contact.php" &gt;Contact&lt;/a&gt;
        &lt;/div&gt;
        &lt;!-- /header --&gt;

        &lt;div id="content" &gt;&lt;/div&gt;

        &lt;!-- sidebar --&gt;
        &lt;div id="sidebar" &gt;&lt;/div&gt;
        &lt;!-- /sidebar --&gt;

        &lt;div class="clear" &gt;&lt;/div&gt;

        &lt;!-- footer --&gt;
    	&lt;div id="footer" &gt;&lt;/div&gt;
        &lt;!-- /footer --&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>کد های زیر رو از تمپلیت اصلی سایت جدا کرده و با نام header.php ذخیره می کنیم .</p>
<pre class="brush:php">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
    &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
    &lt;link type="text/css" rel="stylesheet" href="style.css" media="screen"  /&gt;
    &lt;title&gt;Site Title&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div id="main" &gt;
    	&lt;!-- header --&gt;
    	&lt;div id="header" &gt;&lt;/div&gt;
        &lt;div id="menu" &gt;
     		&lt;a href="home.php" &gt;Home&lt;/a&gt;|
            &lt;a href="About.php" &gt;About&lt;/a&gt;|
            &lt;a href="Contact.php" &gt;Contact&lt;/a&gt;
        &lt;/div&gt;
        &lt;!-- /header --&gt;</pre>
<p>کدهای زیر رو هم با نام sidebar.php ذخیره می کنیم</p>
<pre class="brush:php">        &lt;!-- sidebar --&gt;
        &lt;div id="sidebar" &gt;&lt;/div&gt;
        &lt;!-- /sidebar --&gt;</pre>
<p>و کدهای زیر رو با نام footer.php ذخیره می کنیم</p>
<pre class="brush:php">        &lt;div class="clear" &gt;&lt;/div&gt;

        &lt;!-- footer --&gt;
    	&lt;div id="footer" &gt;&lt;/div&gt;
        &lt;!-- /footer --&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>حالا وقتی میخوایم یک صفحه جدید ایجاد کنیم فقط کافیه که این سه تا فایل رو include کنیم و اطلاعات مربوط به صفحه جدید رو وارد کنیم .</p>
<pre class="brush:php">&lt;?php include_once('header.php'); ?&gt;
&lt;div id="content" &gt; Content  &lt;/div&gt;
&lt;?php include_once('sidebar.php'); ?&gt;
&lt;?php include_once('footer.php'); ?&gt;</pre>
<p>برای اینکه بتونیم عنوان هر صفحه رو هم  مشخص کنیم تگ مربوط به عنوان صفحه رو توی فایل header.php به صورت زیر تغییر میدیم</p>
<pre class="brush:php">&lt;title&gt; &lt;?php echo $pagetitle; ?&gt; &lt;/title&gt;</pre>
<p>و توی هر صفحه ای که ایجاد می کنیم قبل از include کردن فایل header.php این متغیر رو مقداردهی می کنیم تا به عنوان title صفحه قرار بگیرد .</p>
<pre class="brush:php">&lt;?php
$pagetitle='Contact';
include_once('header.php');
?&gt;
&lt;div id="content" &gt; Contact Form  &lt;/div&gt;
&lt;?php include_once('sidebar.php'); ?&gt;
&lt;?php include_once('footer.php'); ?&gt;</pre>
<p>موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1388/09/14/build-web-pages-with-include-in-php/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>معرفی کلاس TableGear</title>
		<link>http://webnevis.net/1388/09/03/introduction-class-tablegear/</link>
		<comments>http://webnevis.net/1388/09/03/introduction-class-tablegear/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 16:50:40 +0000</pubDate>
		<dc:creator>پیام</dc:creator>
				<category><![CDATA[پی اچ پی - php]]></category>

		<guid isPermaLink="false">http://webnevis.net/?p=192</guid>
		<description><![CDATA[TbleGear یک کلاس فوق العاده قوی برای نمایش اطلاعات جدول های دیتابیس و انجام عملیات روی رکوردهاست که کار کردن باهاش خیلی راحته و باعث میشه تا سرعت انجام کارتون بالا بره و کد کمتری بزنید این کلاس امکان ویرایش و حذف رکوردهای جدول رو به صورت کاملا ای جکسی به شما میده و کاربر [...]]]></description>
				<content:encoded><![CDATA[<p>TbleGear یک کلاس فوق العاده قوی برای نمایش اطلاعات جدول های دیتابیس  و انجام عملیات روی رکوردهاست که کار کردن باهاش خیلی راحته و باعث میشه تا سرعت انجام کارتون بالا بره و کد کمتری بزنید این کلاس امکان ویرایش و حذف رکوردهای جدول رو به صورت کاملا ای جکسی به شما میده و کاربر می تونه با کلیک روی هر فیلد از جدول،اطلاعات اون فیلد رو ویرایش کنه همچنین امکانات زیاد دیگه ای مثل صفحه بندی کردن ، validate کردن اطلاعات دریافتی از کاربر و&#8230; رو به شما میده که اگه یه سر به <a href="http://andrewplummer.com/demos/tablegear/" target="_blank">دمویی</a> که <a href="http://andrewplummer.com" target="_self"><a href="http://andrewplummer.com/code/tablegear/" target="_blank">سایتش</a> </a>ارائه داده بزنید متوجه این امکانات میشید،توی <a href="http://andrewplummer.com/code/tablegear/" target="_blank">سایت</a> رسمی این کلاس هم توضیحات کاملی  در مورد نحوه استفاده ازش وجود داره .<br />
برای کار کردن با اطلاعات فارسی باید توی فایل اصلی کلاس که توی پوشه src قرار داره داخل متد connect دو تا کوئری زیر رو بعد از دستور mysql_connect قرار بدید تا اطلاعات فارسی رو به صورت درست ذخیره کنه و نمایش بده .</p>
<pre class="brush: php">		mysql_query("SET CHARACTER SET utf8;",$this-&gt;connection);
		mysql_query("SET SESSION collation_connection = 'utf8_persian_ci'",$this-&gt;connection);</pre>
]]></content:encoded>
			<wfw:commentRss>http://webnevis.net/1388/09/03/introduction-class-tablegear/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
