Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Artisan无法在全局命名空间中查看WP_查询_Php_Wordpress_Laravel_Laravel Artisan_Classnotfound - Fatal编程技术网

Php Artisan无法在全局命名空间中查看WP_查询

Php Artisan无法在全局命名空间中查看WP_查询,php,wordpress,laravel,laravel-artisan,classnotfound,Php,Wordpress,Laravel,Laravel Artisan,Classnotfound,我正在Laravel内部构建一个应用程序。这个项目的一部分是一个面向前端的网站,我公司的营销团队希望能够通过WordPress管理这个网站。为了让他们能够做到这一点,为了方便地访问这些数据,我将WordPress引导到Laravel中,以便访问WordPress类和函数 WordPress在/public/index.php中引导 <?php /** * Laravel - A PHP Framework For Web Artisans * * @package Laravel

我正在Laravel内部构建一个应用程序。这个项目的一部分是一个面向前端的网站,我公司的营销团队希望能够通过WordPress管理这个网站。为了让他们能够做到这一点,为了方便地访问这些数据,我将WordPress引导到Laravel中,以便访问WordPress类和函数

WordPress在/public/index.php中引导

<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylorotwell@gmail.com>
 */

/*
|--------------------------------------------------------------------------
| Bootstrap Wordpress Inside Of Laravel
|--------------------------------------------------------------------------
|
| Brings in the wordpress functions for use inside of your laravel classes
| like your controllers and service providers. This makes true coupling
| inside of laravel possible.
|
*/

define('WP_USE_THEMES', false);
require __DIR__.'/hunchentoot/wp-blog-header.php';

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels nice to relax.
|
*/

require __DIR__.'/../bootstrap/autoload.php';

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../bootstrap/app.php';

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

虽然这不是一个理想的答案,但我确实找到了解决办法

新服务提供商

<?php

namespace App\WPQuery;

class FooterLogosQuery extends \WP_Query
{
    /**
     * Container for the arguements for the query
     * 
     * @var Array
     */
    protected $args;

    /**
     * Container for the query order
     * 
     * @var String
     */
    public $order;

    /**
     * Container for the query post total
     * 
     * @var Integer
     */
    public $totalPosts;

    /**
     * Constructs the object and sets the default args
     *
     * @return void
     */
    public function __construct()
    {
        $this->order      = 'ASC';
        $this->totalPosts = 6;
        $this->setArgs();
    }

    /**
     * Sets the order for the query if called
     * 
     * @param String $order Container for the query order
     */
    public function setOrder($order)
    {
        $this->order = $order;
        $this->setArgs();
    }

    /**
     * Sets the total for the query if called
     * 
     * @param Integer $total Container for the query post total
     */
    public function setTotalPosts($total)
    {
        $this->totalPosts = $total;
        $this->setArgs();
    }

    /**
     * (Re)Sets the arguements for the query upon call
     *
     * @return void
     */
    public function setArgs()
    {
        $this->args = [
            'post_type'      => 'footer_logos',
            'posts_per_page' => $this->totalPosts,
            'order'          => $this->order,
        ];
    }

    /**
     * Creates the query for manipulation inside of controller
     * 
     * @return Object This is a WordPress Query Object
     */
    public function createQuery()
    {
        parent::__construct($this->args);
    }

    /**
     * Resets the query once the objects use is complete
     *
     * @return void
     */
    public function __destruct()
    {
    wp_reset_query();
    }
}
<?php

namespace App\Providers;

use App\WPQuery\FooterLogosQuery;
use App\Formaters\FooterLogosFormater;
use Illuminate\Support\ServiceProvider;

class FooterLogosProvider extends ServiceProvider
{
    /**
     * Loads the data for this service provider
     * 
     * @return Array returns array of usable data
     */
    public function loadData()
    {
        $footerLogosQuery    = new FooterLogosQuery();
        $footerLogosFormater = new FooterLogosFormater();

        $logosQuery   = $footerLogosQuery->createQuery();
        $queriedLogos = $footerLogosQuery->get_posts();
        $logos        = $footerLogosFormater->formatFooterLogos($queriedLogos);

        // Delets Objects From Memory
        unset($footerLogosQuery, $footerLogosFormater);

        return $logos;
    }

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        $logos = [];

        // Stops false flag from being thrown in artisan
        if (!$this->app->runningInConsole())
        {
            $logos = $this->loadData();
        }

        view()->share('footerLogos', $logos);
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}

虽然这不是一个理想的答案,但我确实找到了解决办法

新服务提供商

<?php

namespace App\WPQuery;

class FooterLogosQuery extends \WP_Query
{
    /**
     * Container for the arguements for the query
     * 
     * @var Array
     */
    protected $args;

    /**
     * Container for the query order
     * 
     * @var String
     */
    public $order;

    /**
     * Container for the query post total
     * 
     * @var Integer
     */
    public $totalPosts;

    /**
     * Constructs the object and sets the default args
     *
     * @return void
     */
    public function __construct()
    {
        $this->order      = 'ASC';
        $this->totalPosts = 6;
        $this->setArgs();
    }

    /**
     * Sets the order for the query if called
     * 
     * @param String $order Container for the query order
     */
    public function setOrder($order)
    {
        $this->order = $order;
        $this->setArgs();
    }

    /**
     * Sets the total for the query if called
     * 
     * @param Integer $total Container for the query post total
     */
    public function setTotalPosts($total)
    {
        $this->totalPosts = $total;
        $this->setArgs();
    }

    /**
     * (Re)Sets the arguements for the query upon call
     *
     * @return void
     */
    public function setArgs()
    {
        $this->args = [
            'post_type'      => 'footer_logos',
            'posts_per_page' => $this->totalPosts,
            'order'          => $this->order,
        ];
    }

    /**
     * Creates the query for manipulation inside of controller
     * 
     * @return Object This is a WordPress Query Object
     */
    public function createQuery()
    {
        parent::__construct($this->args);
    }

    /**
     * Resets the query once the objects use is complete
     *
     * @return void
     */
    public function __destruct()
    {
    wp_reset_query();
    }
}
<?php

namespace App\Providers;

use App\WPQuery\FooterLogosQuery;
use App\Formaters\FooterLogosFormater;
use Illuminate\Support\ServiceProvider;

class FooterLogosProvider extends ServiceProvider
{
    /**
     * Loads the data for this service provider
     * 
     * @return Array returns array of usable data
     */
    public function loadData()
    {
        $footerLogosQuery    = new FooterLogosQuery();
        $footerLogosFormater = new FooterLogosFormater();

        $logosQuery   = $footerLogosQuery->createQuery();
        $queriedLogos = $footerLogosQuery->get_posts();
        $logos        = $footerLogosFormater->formatFooterLogos($queriedLogos);

        // Delets Objects From Memory
        unset($footerLogosQuery, $footerLogosFormater);

        return $logos;
    }

    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        $logos = [];

        // Stops false flag from being thrown in artisan
        if (!$this->app->runningInConsole())
        {
            $logos = $this->loadData();
        }

        view()->share('footerLogos', $logos);
    }

    /**
     * Register the application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }
}