🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۵ Ebrahim Shahi
ترتیب اجرای کد و اینکلود کردن فایل‌ها در php
جامعه وردپرس (برنامه نویسی) ایجاد شده در ۲۰ شهریور ۱۴۰۲

درود

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

میخواستم بدونم تو PHP هم به همین ترتیب هست؟ زمان اینکلود کردن فایل‌ها چطور؟ ما کدمون رو به بخش‌های مختلف در فایل‌های مختلف تقسیم میکنیم و بعد همه رو در فایل اصلی اضافه میکنیم. ترتیب اضافه کردن این فایل‌ها به پروژه مهم هست؟

core.php:
include_once a.php;
include_once b.php;
include_once c.php;

میشه در فایل a تابعی رو فراخوان کرد که در فایل C تعریف شده؟

با سلام و احترام

در php هم مثل c تا زمانی که تابع اینکلود نشده باشه نمیتونید استفاده کنید و ترتیب فراخوانی مهم هست.

البته اگر با دوره پیش برید بحث autoloading گفته میشه و خیلی بهتر میتونید مدیریت کنید این موارد رو.

موفق باشید

بهنام مرادی ۲۰ شهریور ۱۴۰۲، ۰۸:۳۶

آخه ایجوری سوال شد واسم که الان عکسش رو داریم و کار هم میکنه در همین افزونه ترتیب اینکلود‌ها این هست:

core.php:
//Include Files
include_once LR_PLUGIN_DIR.'view/front/login.php';
include_once LR_PLUGIN_DIR.'_inc/login.php';
include_once LR_PLUGIN_DIR.'_inc/register.php';
include_once LR_PLUGIN_DIR.'_inc/recover-password.php';
include_once LR_PLUGIN_DIR.'_inc/change-password.php';
include_once LR_PLUGIN_DIR.'_inc/sendSms.php';
include_once LR_PLUGIN_DIR.'_inc/sendMail.php';
include_once LR_PLUGIN_DIR.'_inc/helper.php';
include_once LR_PLUGIN_DIR.'_inc/sms_functions.php';
include_once (ABSPATH.'wp-includes/pluggable.php');

بعد تابع wp_lr_add_verification_code_phone در sms_functions.php تعریف شده ولی داره در register.php استفاده میشه. این با اون تعریف ترتیب تعریف و فراخوانی مغایر هست. این قسمت رو متوجه نمیشم.

Ebrahim Shahi ۲۰ شهریور ۱۴۰۲، ۰۸:۵۷

سلام مجدد

ببینید مفهوم اسفتاده شدن با صدا زده شدن متفاوته

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

شما میتونید توابع مختلفی رو استفاده کنید ولی به محض اینکه اون تابع صدا زده باشه یعنی قرار بشه کاری رو انجام بده چک میکنه dependencies هاش تو دسترسش باشن در غیر اینصورت php فقط syntax و فرمت رو چک میکنه.

موفق باشید

بهنام مرادی ۲۰ شهریور ۱۴۰۲، ۰۹:۱۰

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

Ebrahim Shahi ۲۰ شهریور ۱۴۰۲، ۱۰:۴۱

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

بهترین پاسخ
مهدی باقری ۲۰ شهریور ۱۴۰۲، ۱۶:۰۳