معماری php سایت ، با مقدمه ای از html و css و جاوا اسکریپت

saalek110

Well-Known Member



تا اینجا که خبری از php نبود ، می توانید در گوشی یا کامپیوتر خود کار کنید.
و بروسر قاضی شماست
که نشان می دهد از چی چطور استفاده کردید.
 
آخرین ویرایش:

saalek110

Well-Known Member
دیدن سورس صفحه:

بعدا باز با html و css تمرین می کنیم ، ولی فعلا می خواهیم حالا که به صفحه ۳ وارد شدیم ، در مورد php صحبت کنیم.

یک تفاوت دیگر زبانهای سمت کلاینت و سمت سرور اینه که اگر سورس صفجه را بگیریم خبری از کدهای php نیست.


شما در سورس صفحه html و css و جاوا اسکریپت را می توانید ببینید ولی کدهای php را نمی توانید ببینید.

خوب این طوری ، اگر از ظاهر یک سایت یا رفتارش(جاوا اسکریپت) خوشتان اومد می توانید سورس صفحه را ببینید و از کدهایش کپی بگیرید و در سایت خود استفاده کنید، مثلا همین div که من در پست های قبل گفتم ، در سایتها زیاد استفاده میشه ، می توانید سورس سایتها را ببینید و css اون div ها را نگاه کنید و الگو بگیرید.

ولی برای php ، چون کدهایش در سورس صفحه نیست چنین کاری ممکن نیست.

در ویندوز برای دیدن سورس صفحه ، روی صفحه کلیک راست کنید و پیج سورس را بزنید.
در گوشی جلوی اسم سایت view-source و دو نقطه را بنویسید و بعد ادرس سایت را بنویسید.
 
آخرین ویرایش:

saalek110

Well-Known Member
وظایف php:



برای یادگیری php ، دیدن مثالها خوبه. نمونه کد هست در سایتهایی.

وقتی یک صفحه اجرا میشه ، کدهای php اجرا میشه و اگر چاپی داشته باشه شما اون چاپ را فقط می بینید.
مثلا فرض کنید در یک صفحه می رود از دیتابیس مقالاتی را می خواند و به شکل وبلاگ به کاربر نشان می دهد.
و زیر مقاله قسمت نظر بدهید داره. قسمت نظر بدهید یک فرم html است که وقتی پرش می کنید و دکمه اش را می زنید ، باز پاس داده میشه به کدهای اکشن اون دکمه ، که یک سری کد php است ، مثلا باعث میشه نظر فرد در دیتابیس ذخیره بشه.

ذخیره نظرات بازدیدکننده سایت ، یکی از اعمال روتین php است. یعنی یکی از اعمال رایج php است.


پس اول یک سری از کدهای php موقع اجرای صفحه اجرا میشه

و بعدبا زدن هر دکمه می توانید یک سری کد php دیگه را به اجرا دربیاورید.
یا می توانید با زدن یک دکمه مقداری کد جاوا اسکریپت را به اجرا دربیاورید ولی جاوا اسکریپت سمت کاربر می تونه کار کنه و دستش به دیتابیس سرور نمی رسه ، پس وظایف جاوا اسکریپت با وظایف php فرق داره.
مثلا می توانید با جاوا اسکریپت نمایشی برای کاربر ترتیب بدهید ، مثل یک تئاتر یا ارکستر و او را تحت تاثیر قرار دهید ، مثلا یک بازی که با جاوا اسکریپت ساخته شده ، ولی مثلا برای ثبت امتیاز کاربر در دیتابیس باید سراغ php بروید.


یک کاری که من کردم این بود داخل input هایی یک سری اطلاعات با جاوا اسکریپت تنظیم می شد و با زدن یک دکمه ثبت نهایی ، اطلاعات داخل اینپوت ها در دیتابیس ذخیره میشد ، البته ممکن است روش های بهتر و اصولی تری وجود داشته باشه ، من یک طراح حرفه ای وب نیستم ، من فقط یک علاقه مند و آماتورم.ولی به هر حال یک رابطه ای بین حاصل کار جاوا اسکریپت و php ایجاد شد. یعنی اینپوت ها جایی بود که هم جاوا اسکریپت می تونست درش بنویسه و هم php می توانست اون را بخونه.
اگر کمی جاوا اسکریپت یاد بگیرید می دانید چطوری محتوای یک input را تغییر دهید ، و خوندن input توسط php هم کار همیشگی اون است. پس کلا این کار خیلی ساده است ولی برای این مطرح کردم اینجا که فکر کنید کدهتی جاوا اسکریپت و php تماس نزدیک با هم دارند ، نه چنین نیست ، چون کدهای php روی سرور اجرا می شوند و کدهای جاوا اسکریپت روی کامپیوتر کلاینت یا کاربر اجرا میشوند.
برای فهمش فرض کنید شما دو مدار الکترونیکی دارید ،یکی درخانه خودتان است و دیگری در خانه دوستتان ، این دو کنار هم نیستند که اطلاعات را خیلی راحت به هم منتقل کنند ، پس یک سازوکاری باید ایجاد کنید که این دو مدار ، بتوانند با هم ارتباط داشته باشند. پس ما می آییم یک سری ترمینال در مدار خانگی ایجاد می کنیم و با زدن یک دکمه محتوای این ترمینال ها به مداری که د. خانه دوستتان است منتقل می شود.
 
آخرین ویرایش:

saalek110

Well-Known Member
چه کاری با جاوا اسکریپت ، چه کاری با php ؟
حالا این بحث پیش می آید که کدام کارها را باید با جاوا اسکریپت انجام داد و کدام کارها را با php

فرض کنید تبدیل تاریخ میلادی به شمسی داریم. کدش به php موجود است ،
مثلا کاربر بر وبلاگی نظر می کذارد ، نظرش توسط فرم html به قسمت php ارسال می شود ، در همون قسمت php میشه تاریخ را تبدیل و ضمیمه نظر کاربر کرد و دردیتابیس ذخیره کرد. حالا آیا نمیشه با جاوا اسکریپت این تبدیل تاریخ را انجام داد ، احتمالا میشه ، چون جاوا اسکریپت کدهایش بسیار شبیه php است و فقط سمت کلاینت و سرور بودن این دو فرق دارد، ولی چیزی که من دیدم ، اینه که این کارو یا php انجام دادند، و دلیلی نداره با جاوااسکریپت انجام بدهند ، شاید یک دلیلش اینه که کدهای php قابل دیدن نیست و ایمن تره ، اگر با جاوا اسکریپت باشه کدها قابل کپی و سرقت است و شاید اگر کدها قابل دیدن باشه حتی راه سو استفاده هایی برای ضربه به سایت باز بشه. پس گویا استفاده از php ارجح باشه و جاوا اسکریپت جایی استفاده میشه که دیگه مجبور به استفاده از جاوا اسکریپت باشیم یا چیزهای روتین و بی خطری باشه. البته من سواد مقایسه جاوا اسکریپت و php را ندارم ، فقط از این جهت این بحث ها را می کنم تا تفاوت این دو زبان برای شما جا بیافتد
.
 

saalek110

Well-Known Member
جزایر کدهای php

پس ما کدهای php را به دو بخش تقسیم می کنیم
قسمتی که در بارگذاری اول صفحه اجرا میشه
و تکه هایی که هر کدام با یک فرم ، فراخوانده میشه ، حالا ممکنه فرم فقط یک دکمه باشه.

ولی حواستان باشه اون قسمت اول هر بار اجرا میشه ، یعنی با زدن هر دکمه صفحه اون قسمتی از کد php که خارج اکشن فرم ها هست ، باز اجرا میشه.

اگر می خواهید اون قسمت اول دفعه های بعد اجرا نشه ، مثلا می توانید بگویید اگر یک دکمه صفحه زده شده بود این قسمت دیگه اجرا نشه ، یا یک شرطی بزارید که فقط یک بار بتونه اجرا بشه.
 

saalek110

Well-Known Member
پس در پست قبل ، گفتیم روی اجرای جزایر کد php خود باید مدیریت کنید.

خوب. Html هم قسمت نمایشی همان کدهای php است ، ،مثلا یک جزیره php , قسمتی از دیتابیس را می خواند و با تیبل html در صفحه نمایش می دهد.
 
آخرین ویرایش:

saalek110

Well-Known Member
ساختن فایلهای خارجی از جزایر کد php :

اگر بخواهید ، صفحه شلوغ نشه می توانید اون تکه کد را درون یک فایل با پسوند php بزارید و اول و آخرش هم اینها را بزارید:

PHP:
<?php




?>

بعدش با مسیرش اینکلود کنید. مثلا:
PHP:
[/SIZE]

include"folder/name.php";

پس ما جزایر را بردیم بیرون تا خلوت تر بشه ، این طوری چند تا صفحه سایت می توانند از یک جزیره با هم استفاده کنند.

و باید هم همین کار را کنند ، فرض کنید ۳ جزیره یکسان در ۳ صفحه سایت دارید ، اگر بخواهید اصلاحش کنید ، باید هر سه صفحه سایت را اصلاح کنید ولی اگر هر ۳ صفحه سایت یک جزیره را include کرده باشند ، فقط کافیه اون فایل جزیره را ادیت کنید.
 
آخرین ویرایش:

saalek110

Well-Known Member
عدم تکرار:
کلا هیچ کدی نباید تکراری باشه ، بعد مدتی کدنویسی می فهمید ، وجود داشتن تکراری یک تکه باعث کار اضافه است و می روید که این قسمتها را از صفحات خارج کنید. البته برای این کار عجله نکنید ، این کار خودش سر موقعش انجام میشه.
 

saalek110

Well-Known Member
داریم بی کد جلو می رویم ، خوب بود فرم html و اکشن اون را می نوشتیم. بعدا این کارو می کنم.
 

saalek110

Well-Known Member
فرق include کردن یک تکه کد ، با تابع سازی:

وقتی یک تکه کد را include می کنید ، انگار اون کد واقعا اونجاست ولی فقط هل داده شده بیرون.

ولی تابع شرایط خاص خودش را داره.
وقتی شما تابع می سازید ، کدهای درون تابع به هیچ جا دسترسی ندارند ، تابع مثل یک گردان نیروست که وسط نیروهای دشمن محاصره شده باشه ، و حالا چند نفر اونجا هستند تا کارهایی برای شما بکنند. مثلا باید کانکشن را به تابع ارسال کرد ، اگر قرار است به دیتابیس وصل بشه. مثلا شما یک سری شرایط می دهید و تابع با اون شرایط میره از دیتابیس چیزی را لود می کنه و نمایش می دهد. می دونید تابع چندین ورودی داره. ورودی ها مواد اولیه کار تابع است ، مثلا کارخانه نان ، ورودی اش آرد و آب و سوخت است و خروجی اش نان.
گاهی تابع مقدار بازگشتی داره که در متغیری اون را دریافت می کنید.
 
آخرین ویرایش:

saalek110

Well-Known Member
معماری برنامه ها:

معماری یعنی کدها که زیاد میشن چطور مدیریت کنیم اونها را. وگرنه خرده کد و آموزشش در سایتها ریخته.

ما فعلا داریم معماری برنامه ها را بحث می کنیم ، و بعدا باید با نوشتن کد ، به شکل عملی تر و واقعی تر کار را ارائه دهیم.

در خیلی آموزش ها وارد این قسمت ها نمیشن ، و کدنویسی فقط میگن ، خوب سایتهای زیادی ،چه انگلیسی و چه فارسی ، هست که کدها را گفته ، مثل همین w3school . سایت w3 هم کدها را نوشته و هم نتیجه اجرا را به شما نشون می دهد. و می توانید کدها را تغییر دهید و نتیجه اجرا را باز ببینید.
 

saalek110

Well-Known Member
ادامه معماری :

اینکلود از اینکلود:

اگر یک تکه را بیرون انداختید و داخل پوشه ای گداشتید و include اش کردید ،
اولا اون قطعه اینکلود شده به توابع اینکلود شده بالای صفحه دسترسی داره
و دوما اگر این تکه اینکلود شده بخواهد یک قطعه را بیرون بیاندازد و اینکلودش کند ، باید فرض کنید محل فایل ، همان محل فایل صفحه سایت است ، نه پوشه ای که درش قرار دارد.


پس قطعه اینکلود شده ممکن است در پوشه هایی رفته باشد ولی آدرس همان آدرس صفحه سایت است که اینکلودش کرده.
 

saalek110

Well-Known Member
Unique

قانون یکتا :


این قانون میگه نباید تکه کد تکراری داشته باشیم
هر تکه کاری برای سایت انجام می دهد و نباید تکراری ازش موجود باشد.

مثلا یک خودرو ۲ تا پمپ بنزین ندارد.

و وقتی بخواهید یک قسمت را ارتقا بدهید ، فقط همون قسمت را ارتقا می دهید.

مثلا برای خوندن یک سلول دیتابیس ، یک تابع می سازید.
شاید برای خواندن به روش دیگر ، یک تابع دیگر بسازید.

و برای خواندن و چاپ یک تکه از دیتابیس ، شما یک قطعه می توانید داشته باشید که include می کنید.



اینکه کجا تابع می سازید و کجا قطعه قابل include خودتان باید قانونش را تعیین کنید ، چون یک نفر با تابع راحت تره ولی فردا شاید نظرش عوض بشه و بخواد قطعاتی برای include بسازد.

چون روحیات فرق داره ، به نظرم باید خود افراد قانون بسازند. ولی باید حتما برای هر کاری قانون بسازید.

زیرا قانون برای ایجاد نظم است.

فقط در این کار هم نیست ، در هر کاری ایجاد قوانین و عمل به آنها لازم است.
 

saalek110

Well-Known Member
هدف شما چیست؟
باید ببینید سایت را برای چه هدفی می خواهید بسازید و همان هدف را دنبال کنید.
باید بدانید هر نوع کدی برای هر منظوری هست و با کمی جستجو می توانید پیدا کنید.


مثلا اگر من بخواهم با جاوا اسکریپت در سایتم بازی بسازم ، کافیه همین کلمات را سرچ کنم.

مثلا
اگر سایت تجاری می سازید باید ببینید سایت شما چقدر منظور شما را برآورده کرده ، و چه تغییراتی بدهید تا به هدف خود نزدیک تر شوید.
 

saalek110

Well-Known Member
چیزی را نابود نکنید.


اگر کدی نوشتید و کار می کنه ، اون را دور نیاندازید. فوقش اسم مناسبی رویش بگذارید و آن را در پوشه ای بگذارید و از جلوی دست دور کنید.

از همه کدهای خود کپی بگیرید تا سالهای بعد راه رفته را نخواهید طی کنید و دوباره کاری نکنید.
 

saalek110

Well-Known Member
ارائه همه تکه کدها:

من سایتم همه قسمتهای لازم کار من را دارد ، ولی دلیل ندارد همه را در تاپیک در اختیار دیگران بگذارم. ولی راهنمایی های کلی می کنم تا سرعت کار شما سریعتر شود.

باز تکرار می کنم ، همه کدهای لازم شما در سایتهای اموزشی یا فروم های بحث ، هست. کافیه پیدایش کنید ، ولی باید در حفظ آنها نظم داشته باشید و حرکت رو به جلو داشته باشید.

در تاپیکهایی که من زدم خیلی کدها در شاخه های html و جاوا اسکریپت و php و css ذکر کردم ، البته آموزشهای من کامل نیست ولی برای راه اندازی یک سایت کافی است. بقیه قسمتهای تکمیلی را خودتان باید پیدا کنید.

مثلا قسمت زیباسازی سایت شما به عهده خودتان است. البته آموزش هایی در این مورد هم هست ، ولی من هنوز به آن نپرداختم.
 

saalek110

Well-Known Member
مدتی فرصت بدهید


منظور من اینه تغیرات کلی ناگهانی ندهید. اگر سایتتان کار می کنه ، برای تغییر دادن عجله نکنید ، خوب ، اون تغییر را بررسی کنید و مطمئن باشید باعث بهبود کار میشه.

افزایش خوانایی:
اگر یک تغییر پیچیدگی ایجاد می کند و باعث ناخوانایی می شود انجام ندهید ، چون جلوی ارتقای بعدی را می گیرد.

و اگر یک تغییر کارایی سایت را افزایش نمی دهد ولی باعث بسط و افزایش خوانایی میشه و بعدا ارتقاها بهتر روی اون بستر انجام میشن اون کار را انجام دهید.

یعنی اصلاح کلی اسکلت سایت توضیه می شود.
این اصلاحات کلی بعدا هم اتفاق می افتد.

یعنی معماری کلی ذهن شما داره تکمیل میشه.

قسمت ادمین:
یکی از این قسمتها ، قسمت ادمین سایت شماست.
قسمت ادمین یا مدیریت سایت قسمت مهمی است که شاید وقت زیادی صرفش میشه ولی باید وقت گذاشت
چون کارگاه شماست و توسعه سایت شما وابسته به توسعه قسمت ادمین است.

قسمت ادمین قسمتهای مختلفی داره.
یک قسمتش ، قسمت ادیت دیتابیس است.
شما مجبورید دیتابیس را تغییر دهید. و ابزار لازم برای این کار را لازم دارید.


من وقتی از سایت صحبت می کنم ، منظورم نصب قالب های اماده نیست مثل وردپرس یا قالب فروم ، منظورم نوشتن همه چیز توسط خودتان است.
 
آخرین ویرایش:

saalek110

Well-Known Member
آمادگی برای تغییر ساختار کلی سایت:

گاهی برای ایجاد یک تغییر کوچک ، باید کل ساختار سایت خود را تغییر دهید.
پس از آن تغییر فعلا صرف نظر کنید و به فکر تغییر کل ساختار باشید.


هر ساختار ظرفیت خاصی دارد و نمیشه چیز اضافه بر اون لود کرد. پس باید فرصت دهید تا برای تغییر ساختار کلی آماده شوید. و برای این کار عجله نکنید. چون باعث به هم ریختن همه چیز می شود.

ابتدا باید ساختار فعلی را خوب بشناسید ، و بعد ساختار جدید را خوب بررسی کنید ، و بعد روش انتقال را بیان و پیاده کنید.
 

saalek110

Well-Known Member
منظور از ساختار سایت چیه؟

مثلا شما فرم هایی ساختید و با این فرم ها ، اطلاعاتی بین صفحات ارسال می کنید. منظور با فیلد هیدن است و غیرهیدن.
متغیرهایی را نامگذاری کرده اید ، و این متغیرها مثل کابل و سیم ، بین صفحات مختلف ارتباط ایجاد کرده اند.

پس مثل سیم کشی می مونه.
وقتی شما می توانید سیم کشی فعلی را تغییر دهید که بدونید چطور کار می کنه ، و بعدش یک استاندارد جدید تعریف کنید ، و بر اساس اون استاندارد سیم کشی جدید را ایجاد کنید.

باید بدونید هر صفحه چه ورودی هایی دریافت می کنه ، و درون خودش ، چه سیم کشی هایی دارد. منطورم صدا زدن خود صفحه با php self است. یعنی فرم هایی که خود صفحه را صدا می زنند.

پس گاه ،صفحه شما هم از بیرون ورودی دریافت می کنه و هم از درون خودش ، باید بر این ترافیک مدیریت کنید.

باید نام متغیرها استانداردهایی پیدا کند و جایی در صفحه به شکل کامنت ، این سیم کشی خود را توضیح دهید.

باید بدونید چه صفحاتی به هم وصل هستند و سیم های بین اونها یعنی متغیرها ، چه اسم هایی دارند و چه چیزی را حمل می کنند.




مثال ، ادیت مجدد:
مثلا یک صفحه ، مسئول ادیت یک مطلب است. این صفحه ورودی هایی دریافت می کنه.
حالا ، اگر بعد ادیت دوباره بخواهیم ادیت مجدد کنیم ، باید به خود صفحه ، باز پاس بدهیم ، اینجا باید متغیرها مدیریت شود.
یعنی باید متغیرهایی که صفحه دریافت می کنه ، خوب مشخص بشه ، و وقتی هم که صفحه خودش را صدا می زنه ، اون متعیرها درست بارگذاری بشن.
 
آخرین ویرایش:

saalek110

Well-Known Member
تا وقتی ، خیلی خوب ساختار فعلی را نشناختید ، دنبال ارتقای ساختار نباشید.
مثلا فعلا ساختار فعلی را تمیزکاری کنید. منظور از تمیزکاری افزایش خوانایی است. و ایجاد نظم بیشتر.
 

جدیدترین ارسال ها

بالا