ورود

View Full Version : نحوه فراخوانی توابع موجود در یک کنترولر دیگر در پوشه دیگر



alirayaneh
پنج شنبه 28 خرداد 1394, 15:09 عصر
با سلام و وقت بخیر

پوشه کنترولر من

controller/
و
conroller/admin

هست . الا نیاز دارم در کنترلر
controller/profile.php
از تابعی که در
conroller/admin/foo.php
در این فایل ایجاد کردم استفاده کنم . و نمیخام مجدد این تابع رو توی controller/profile.php ایجاد کنم
آیا روشی هست که بدون این که کانفلیک یا اخلالی بوجود بیاد از تابع foo در کنترولر پروفایل استفاده کنم ؟

محتویات controller/profile.php

class profile extend basecontroller
.

.
.



و محتویات conroller/admin/foo.php

class foo extend admin
.
.
.
.

godofphp
پنج شنبه 28 خرداد 1394, 15:24 عصر
اولا این آدرس دهی شما برای متد درونی کاملا اشتباه هست !

conroller/admin/foo.php
درست آدرس دهی اینطور هست
site.com/controller/method/param's
اصلا نباید نام پوشه رو ذکر کنی دوست عزیز تو داری mvc کار میکنی من مفهموم .php رو آخر متد foo نفهمیدم
دوما"
هر کنترلر یک کلاس میباشد و اگه به شی گرایی مسلط باشید باید بدونید که برای دسترسی داشتن به متدهای درون کلاس باید از کلاس یک شی بسازید و به متدهای درونی اون دسترسی داشته باشید
سوالتون واضح نیست

godofphp
پنج شنبه 28 خرداد 1394, 15:25 عصر
باز هم من یک لینک میدم که مطمعنا" اگر با حوصله و دقت مطالعه بفرمائید کمک خواهد کرد
لینک (http://stackoverflow.com/questions/14165895/how-to-load-a-controller-from-another-controller-in-codeigniter)

alirayaneh
پنج شنبه 28 خرداد 1394, 15:36 عصر
با تشکر از شما ..
مشکل اینجاست که این اسکریپت رو بنده ننوشتم و برای رفع مشکل این اسکریپت دارم کدهای اون رو برسی میکنم تخصص اصلی بنده laravel هست .
در لاراول برای این کار از دستور زیر استقاده میشه .


AppL::controller('admin.foo')->somfunction()


من زیاد سر درنیاوردم چطور میشه از کلاس موجود در پوشه admin یک شی ساخت
آخه هم یک کلاس با نام foo در پوشه اصلی controller وجود داره و هم یک کلاس با همین نام در پوشه controller/admin


$foo=new foo();
حال اگر به این روش یک شی ایجاد کنم شی ایجاد شده از کلاس foo موجود در controller ایجاد شده و شامل توابع موجود در اون هست
اما در حالی که من به شی نیاز دارم که شامل توابع کلاس foo که رو پوشه admin قرار گرفته است باشه .

alirayaneh
پنج شنبه 28 خرداد 1394, 15:40 عصر
ممنونم از شما اینو یک بار مطالعه کردم اما به نتیجه ای نرسیدم

plague
پنج شنبه 04 تیر 1394, 16:26 عصر
تا اونجا که من میدونم نمیشه یا باید از ارث بری استفاده کنی و ان تابع مشترک رو بندازی تو کنترلر والدشون

یا یه library بسازی و این تابع رو بندازی اونجا بعد این کتابخونه رو لود کنی هر جا دوست داشتی و از تابع استفاده کنی