在加载网页上调用所有php类
我试图创建一个类,当web中的任何站点加载时,该类将加载所有类。这里有我要加载的类:在加载网页上调用所有php类,php,class,Php,Class,我试图创建一个类,当web中的任何站点加载时,该类将加载所有类。这里有我要加载的类: <?php include_once filter_input(INPUT_SERVER, "DOCUMENT_ROOT") . "/Config.inc.php"; class Connection extends Conf{ private static $connection; private static $config; public function __con
<?php
include_once filter_input(INPUT_SERVER, "DOCUMENT_ROOT") . "/Config.inc.php";
class Connection extends Conf{
private static $connection;
private static $config;
public function __construct(){
$this->config = new Conf;
}
但它不起作用。请提供一些帮助?您在这里混合了静态变量和类变量 您试图使用$this在类上设置静态变量,它与类的实例相关。要设置静态变量,您应该在_构造内使用self::,当您创建类的实例时会调用该构造,即:
<?php
$blah = new Conf();
代码错误
首先,静态属性不能通过->运算符访问
$this->db_server = "server";
$this->db_user = "username";
$this->db_pass = "password";
$this->db_maindb = "database";
$this->server_folder = "folder";
尝试使用self::让静态成员工作
self::$db_server = "server";
self::$db_user = "username";
self::$db_pass = "password";
self::$db_maindb = "database";
self::$server_folder = "folder";
您可能希望查看,以便无论何时声明类,它都会自动加载文件,并且您不必自己包含类
<? // scInit.php
define("SC_ROOT", dirname( __FILE__ ) ."/" );
define("SC_PREFIX", "sc");
define("SC_EXTENSION", ".php");
spl_autoload_register(
function ($namespace) {
$parts=explode('\\', $namespace);
$class_name= end($parts); /// break namespaces and take last part as class name.
$fileDirectory = array("model", "view", "controller", "admin", "registry"); // Directories to look for the class file
foreach ($fileDirectory as $directory) {
$classFileName = SC_ROOT .$directory."/". SC_PREFIX . $class_name . SC_EXTENSION;
if (file_exists($classFileName)) {
include_once($classFileName);
}
}
});
哇!谢谢你的指导。我认为我需要使用与Java类似的方法,我的意思是,使用函数调用它们,而不是将它们称为静态XD。此外,我认为如果将它们定义为全局常量,则可以在加载网页时访问它们。我会继续我的方式,因为需要一个扩展来访问它们。我的意思是,受保护函数是需要调用扩展的函数。然后从任何非原始页面或扩展原始页面的页面访问它,使其无法调用。我正试图让我的网站尽可能的安全:PIm不知道你所说的网页何时加载是什么意思。
<?php
include_once filter_input(INPUT_SERVER, "DOCUMENT_ROOT") . "/Config.inc.php";
class Connection
{
private $connection;
private $config;
public function __construct(Config $config)
{
$this->config = $config;
}
public function connect()
{
$this->connection = new mysqli($this->config->getServer(), $this->config->getUsername(), $this->config->getPassword(), $this->config->getDatabase());
}
}
class Config
{
private $server;
private $username;
private $password;
private $database;
/**
* @return mixed
*/
public function getServer()
{
return $this->server;
}
/**
* @param mixed $server
*/
public function setServer($server)
{
$this->server = $server;
}
/**
* @return mixed
*/
public function getUsername()
{
return $this->username;
}
/**
* @param mixed $username
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* @return mixed
*/
public function getPassword()
{
return $this->password;
}
/**
* @param mixed $password
*/
public function setPassword($password)
{
$this->password = $password;
}
/**
* @return mixed
*/
public function getDatabase()
{
return $this->database;
}
/**
* @param mixed $database
*/
public function setDatabase($database)
{
$this->database = $database;
}
/**
* @return string
*/
public function getServerFolder()
{
return $this->server_folder;
}
/**
* @param string $server_folder
*/
public function setServerFolder($server_folder)
{
$this->server_folder = $server_folder;
}
private $server_folder;
public function __construct($server, $username, $password, $database)
{
$this->server = $server;
$this->username = $username;
$this->password = $password;
$this->database = $database;
$this->server_folder = "folder";
}
}
<?php
$config = new Config($server, $username, $password, $database);
$connection = new Connection($config);
$this->db_server = "server";
$this->db_user = "username";
$this->db_pass = "password";
$this->db_maindb = "database";
$this->server_folder = "folder";
self::$db_server = "server";
self::$db_user = "username";
self::$db_pass = "password";
self::$db_maindb = "database";
self::$server_folder = "folder";
<? // scInit.php
define("SC_ROOT", dirname( __FILE__ ) ."/" );
define("SC_PREFIX", "sc");
define("SC_EXTENSION", ".php");
spl_autoload_register(
function ($namespace) {
$parts=explode('\\', $namespace);
$class_name= end($parts); /// break namespaces and take last part as class name.
$fileDirectory = array("model", "view", "controller", "admin", "registry"); // Directories to look for the class file
foreach ($fileDirectory as $directory) {
$classFileName = SC_ROOT .$directory."/". SC_PREFIX . $class_name . SC_EXTENSION;
if (file_exists($classFileName)) {
include_once($classFileName);
}
}
});
<?php
//index.php
namespace project\admin;
include_once("scInit.php");
use project\model\TimeStamp;
$con= new TimeStamp();
/* class TimeStamp is not loaded so now it will run spl_autoloader before generating fatal error passing project\model\TimeStamp as parameter.
spl_autoloader will look for scTimeStamp.php in all directories defined in autoload function.
*/