PHP Глобальный массив в функции в функцию класса? - PullRequest
0 голосов
/ 25 января 2020

мой класс ( сообщений. php):

class Posts {

private function getPosts() {

$get_post = (new MYSQL) -> getAllPosts(); // here get all posts from my db
$GLOBALS["all_posts"] = $get_posts;

function all_posts() {
// When I use the return, the page enter on one infinite bucle.. If I use echo this doesnt happen.
return $GLOBALS["all_posts"];

}
}
}

Я хочу, чтобы в моем контенте. php, чтобы я мог вызвать all_posts () функция для получения массива и печати следующим образом:

<div class="posts">

<?php foreach(all_posts() AS $post) : ?>

<h1><?php echo $post["title"]</h1>
<p><?php echo $post["content]; ?></p>

<?php endforeach; ?>

</div>

Я хочу, чтобы функция all_posts () могла быть загружена в мой content.php; В моем индексе. php, прежде чем включать заголовок. php, content. php и нижний колонтитул. php Я загружаю Post-> getPosts (). Спасибо тебе.

1 Ответ

1 голос
/ 25 января 2020

Это может быть заменено функцией с переменной c stati:

<?php

function get_all_posts() {
    static $posts;    
    if(is_null($posts))
        $posts = (new MYSQL) -> getAllPosts();

    return $posts;
}

Но ваша проблема в том, что вам нужно вызвать глобальное присвоение до того, как вы вызовете Post::all_posts(). Обратите внимание, что эта функция должна быть stati c (или объект singleton), если вы не создали экземпляр Post. Если это становится методом stati c, ваш метод get_posts также должен стать stati c.

Уплотнение в одну функцию упрощает упаковку. Однако вы теряете преимущество автозагрузки классов.

...