PDA

View Full Version : سوال: مشکل با فراخوانی متغیر گلوبال



amin_sltny
شنبه 05 مهر 1393, 08:20 صبح
سلام دوستان من دارم یه سی ام اس شخصی می سازم که برای فراخوانی پست ها و .... از روش زیر می خواهم استفاده کنم:

من یه کلاس دارم که در اون پست ها را بررسی می کنه و بر می گردونه از داخل دیتابیس که اسم کلاسش query هست و به شکل زیر هست:



<?php

global $myPosts;
global $myquery;
class query{ private $post; private $databaseRes; public function query($query) { switch($query) { case "posts": $this-
>databaseRes = $GLOBALS["DataBase"]->query("select * from ".$GLOBALS["tbPrefix"]."posts where post_status = 'Published' Limit
0,8"); break; case "latin": $this->databaseRes = $GLOBALS["DataBase"]->query("select * from ".$GLOBALS["tbPrefix"]."posts
where post_latin=N'قابلیت-های-نرم-افزار'"); break; } $GLOBALS["myquery"] = $this; } public function
havePost() { $this->post = $this->databaseRes->fetchArray(); if(count($this->post) > 0) { $this->post = $this-
>post[0]; } else { return false; } } public function havePosts() { $this->post = $this->databaseRes-
>fetchAssoc(); if($this->post!= null) { return true; } return false; } public function thePost() { $GLOBALS["myPosts"] =
$this->post; } }

?>


یه فایل هم هست که در اون پست ها را نشون میده و اسم فایلش single.php هست

و یه کلاس view هم دارم که در اون این دو فایل اضافه میشوند و به شکل زیر هست:


<?php
require_once(blog("root")."/protected/view/View.php");

class postController{ public function Start() { switch($GLOBALS["Action"]) { case "404":
require_once(blog("root").'/protected/404.php'); break;
default: $sm_post = new query("posts");
require_once(blog("root")."/protected/layout/".blog("temName")."/single.php");
break; } }}?>


من در کل به این صورت عمل کردم وقتی کلاس postController فراخوانی میشه یک شی از کلاس کوئری ساخته میشه کلاس کوئری نتیجه کلی را در دو متغیر سراسری global $myPosts;global $myquery; ذخیره میکنه. اما مشکل اینجاس که من در فایل single.php نمی تونم داده ها را ببینم و در واقع اگه خط $sm_post = new query("posts");
را که در کلاس postcontroller قرار دارد را در single.php بنویسم درست میشه ولی من می خوام این در کلاس postController نوشته بشه و در فایل قالب وجود نداشته باشه.

ممنون میشم راهنماییم کنید.

alireza.stack
شنبه 05 مهر 1393, 14:58 عصر
متغیر Global رو بیارید قبل require در جایی که postController رو تعریف کرده اید.

یخورده کد رو خواناتر بنویسید بتونیم بخونیم.