| Server IP : 38.190.208.107 / Your IP : 216.73.216.110 Web Server : nginx/1.28.1 System : Linux ht2026040333114 6.1.0-10-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.37-1 (2023-07-03) x86_64 User : www ( 1000) PHP Version : 8.2.28 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv,eval,assert,passthru,system,exec,shell_exec,popen,proc_open MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /www/wwwroot/test28.chuangfenglink.xyz/wp-content/plugins/fluent-smtp/includes/View/ |
Upload File : |
<?php
namespace FluentMail\Includes\View;
use Exception;
class View
{
protected $app;
protected $path;
protected $data = [];
protected static $sharedData = [];
public function __construct($app)
{
$this->app = $app;
}
/**
* Generate and echo/print a view file
* @param string $path
* @param array $data
* @return void
*/
public function render($path, $data = [])
{
echo $this->make($path, $data); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
/**
* Generate a view file
* @param string $path
* @param array $data
* @return string [generated html]
* @throws Exception
*/
public function make($path, $data = [])
{
if (file_exists($this->path = $this->resolveFilePath($path))) {
$this->data = $data;
return $this;
}
throw new Exception("The view file [{$this->path}] doesn't exists!"); // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped
}
/**
* Resolve the view file path
* @param string $path
* @return string
*/
protected function resolveFilePath($path)
{
$path = str_replace('.', DIRECTORY_SEPARATOR, $path);
return $this->app['path.views'] . $path .'.php';
}
/**
* Evaluate the view file
* @param string $path
* @param string $data
* @return $this
*/
protected function renderContent()
{
$renderOutput = function($app) {
ob_start() && extract(
$this->gatherData(), EXTR_SKIP
);
include $this->path;
return ltrim(ob_get_clean());
};
return $renderOutput($this->app);
}
/**
* Gether shared & view data
* @return array
*/
protected function gatherData()
{
return array_merge(static::$sharedData, $this->data);
}
/**
* Share global data for any view
* @param string $key
* @param mixed $value
* @return void
*/
public function share($key, $value)
{
static::$sharedData[$key] = $value;
}
/**
* Provides a fluent interface to set data
* @param mixed $key
* @param mixed $data
* @return $this
*/
public function with($name, $data = [])
{
if (is_array($name)) {
foreach ($name as $key => $value) {
$this->__set($key, $value);
}
} else {
$this->__set($name, $data);
}
return $this;
}
/**
* Setter for the view
* @param string $key
* @param mixed $value
*/
public function __set($key, $value)
{
$this->data[$key] = $value;
}
/**
* Dump the view result
* @return string
*/
public function __toString()
{
return $this->renderContent();
}
}