Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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类_Php_Class - Fatal编程技术网

在加载网页上调用所有php类

在加载网页上调用所有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

我试图创建一个类,当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 __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.

*/