我想自动include/require所有.php目录下的所有文件.例如:
(目录结构)
-[ classes
--[ loader (directory)
---[ plugin.class.php
--[ main.class.php
--[ database.class.php
Run Code Online (Sandbox Code Playgroud)
我需要一个自动加载所有文件的函数 .php
我尝试了各种各样的:
$scan = scandir('classes/');
foreach ($scan as $class) {
if (strpos($class, '.class.php') !== false) {
include($scan . $class);
}
}
Run Code Online (Sandbox Code Playgroud) 好的,我有一个codeigniter应用程序.它在localhost中工作正常,在我得到的PHP托管中工作正常.但我的客户希望它在IIS中运行.我已经过了web.config陷阱,但现在我收到以下错误:
遇到了未被捕获的异常
类型:例外
消息:会话:PHP进程无法写入已配置的保存路径'c:\ windows\temp'.
文件名:E:\ home\emconexao.com\site3\system\libraries\Session\drivers\Session_files_driver.php
行号:124
我知道这是一个PHP配置问题,但在哪里?
在我的application/config/autoload.php文件中,如果我session从库中删除它工作......直到我登录该网站,然后显然它无法生成会话,它崩溃...
谁能帮我?
我创建的自动加载类的简单脚本,但是当我使用class_exists的spl_autoload_register是执行,例如:
<?php
function autoLoadClass($name) {
echo 'spl_autoload_register: ', $name, '<br>';
}
spl_autoload_register('autoLoadClass');
class_exists('Foo');
class_exists('Bar');
class_exists('Foo\\Bar');
Run Code Online (Sandbox Code Playgroud)
输出:
spl_autoload_register:Foo
spl_autoload_register:Bar
spl_autoload_register:Foo\Bar
是对的吗?有没有办法让"spl_autoload"忽略调用"class_exists"?
我正在使用Windows 10.在src根目录中创建文件夹后,我在其中创建了两个文件.
目录结构(运行前composer install):
?
??? composer.json
??? run.php
?
??? src
??? childclass.php
??? parentclass.php
Run Code Online (Sandbox Code Playgroud)
根目录中的两个文件:
composer.json:
{
"name": "myvendor/mypackage",
"description": "nothing",
"authors": [
{
"name": "Omar Tariq",
"email": "XXXXX@gmail.com"
}
],
"require": {},
"autoload": {
"psr-4": {
"myns\\": "src/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
run.php:
<?php
require_once __DIR__ . '/vendor/autoload.php';
use myns\childclass as childclass;
$childclass = new childclass();
$childclass->abc();
Run Code Online (Sandbox Code Playgroud)
src文件夹中的两个文件:
childclass.php:
<?php
require_once 'parentclass.php';
use myns\parentclass as parentclass;
class childclass extends parentclass
{
public function abc() …Run Code Online (Sandbox Code Playgroud) 有人知道如何使用"新"Zend Autoloader加载模型吗?在Moment中,我的配置如下所示:
的application.ini
# Autoloader Namespace
autoloadernamespaces.0 = "Sl_"
Run Code Online (Sandbox Code Playgroud)
bootstrap.php中
/**
* Start Autoloader
*
* @access protected
* @return Zend_Application_Module_Autoloader
*/
protected function _initAutoload()
{
$autoloader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Sl_',
'basePath' => dirname(__FILE__),
));
return $autoloader;
}
Run Code Online (Sandbox Code Playgroud)
所以当我在/Models/User.php中放置一个模型时
class Sl_Model_User{}
Run Code Online (Sandbox Code Playgroud)
并创建一个新对象,一切都像设计的一样.但是如何使用Autoloader加载位于/Models/Dao/UserDB.php中的模型?
class Dao_UserDB{}
Run Code Online (Sandbox Code Playgroud) 无论如何使用Composer的自定义自动加载器?
我有一些包含数百个类的库,它们按照PSR-0布局在目录结构中.
但是它们还包括一个静态构造函数(类似于Java的静态初始化程序).
我在编剧之前使用的自动加载器会:
if (method_exists($class, '__static')) {
call_user_func(array($class, '__static'));
}
Run Code Online (Sandbox Code Playgroud)
那么有没有扩展Composers默认自动加载器也这样做呢?
当我收到包含<script src="some-file.js"></script>以下示例的网址时:
<html>
<script>
$(document).ready(function(){
$.get('/some-url', function(r) {
$('#html-container').html(r); // Contains: <script src="some-file.js"></script>
});
});
</script>
<body>
<div id="html-container"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
如前所述,此some-file.js结果来自/some-urljQuery将自动添加?_={random number}到查询字符串中的结果。
结果请求:GET some-file.js?_=1365695139815
如何从html()解析的自动加载中禁用此随机请求追加?
@编辑
由于我无法发出请求,这是因为它们是通过html解析执行的,有了Brian的回答,我找到了一个简单的解决方案:
$.ajaxSetup({
// Enable caching of AJAX responses
cache: true
});
Run Code Online (Sandbox Code Playgroud)
我正在使用PHP 5.5.12编写Zend Framework 2.3.1应用程序
我的应用程序包含几个模块,在每个模块的Module.php中,我都有
public function getAutoloaderConfig()
{
return array(
'Zend\Loader\ClassMapAutoLoader' => array(
__DIR__ . '/autoload_classmap.php'
),
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
这是我看到的唯一与ClassMapAutoLoader相关的指示。
当我尝试运行该应用程序时,我得到:
Fatal error: Uncaught exception 'Zend\Loader\Exception\InvalidArgumentException' with message 'Autoloader class "Zend\Loader\ClassMapAutoLoader" not loaded' in /mnt/storage/home/ufk/work-projects/global-logic/project/xpogames/vendor/zendframework/zendframework/library/Zend/Loader/AutoloaderFactory.php on line 85
Run Code Online (Sandbox Code Playgroud)
有什么主意吗?
我正在学习使用php autuoloader...
据我所知,我们可以使用__autoloader或spl_autoloader_*自动加载文件.
假设这是我的目录结构:
ROOT
|
|
ADMIN
| |
| |
| DIST
| |
| SOME_FOLDER
| SOME_FOLDER
| TPL
| |
| |
| SOME_FOLDER1
| |
| test.php
| SOME_FOLDER2
| |
| example1.php
| example2.php
| example3.php
|
|
CLASSES
|
basics.php
class1.php
class2.php
class3.php
class4.php
|
index.php
Run Code Online (Sandbox Code Playgroud)
我为CLASSES目录中的自动加载文件创建了这个类:
basics.php:
class MyAutoLoader
{
public function __construct()
{
spl_autoload_register( array($this, 'load') );
}
function load( $file )
{
//spl_autoload( …Run Code Online (Sandbox Code Playgroud) 我想安装guzzle https://github.com/guzzle/guzzle
我阅读了参考资料,但我对此部分感到困惑:
从该教程,请求要求composer autoloader.所以似乎需要添加require 'vendor/autoload.php';
我添加脚本的位置?
我使用laravel 5.6
autoloader ×10
php ×8
composer-php ×2
codeigniter ×1
constructor ×1
guzzle ×1
html-parsing ×1
iis ×1
jquery ×1
laravel ×1
laravel-5 ×1
laravel-5.6 ×1
namespaces ×1
psr-4 ×1
session ×1
spl ×1
static ×1