作者GALINE (天真可爱CQD)
看板PHP
标题Re: [请益] PHP Namespace use 使用问题
时间Sat Jun 6 10:50:12 2015
※ 引述《aaa7513231 (浑沌与秩序)》之铭言:
: 所以引用了一个github专案的PHP 网址:https://github.com/kachkaev/php-r
: 现在的问题点是前两行程式是引用他整个类别失败
: 出现Fatal error: Class 'Kachkaev\PHPR\RCore' not found in
: C:\wamp\www\php-r-master\src\Kachkaev\Test.php on line 11
快速解决方法
- 安装 composer
https://getcomposer.org/Composer-Setup.exe
- 下这两行指令,跑完之後应该要多一个 vendor 资料夹
- cd C:\wamp\www\php-r-master\
- composer install
- Test.php 最前面加上一行
<?php
include 'C:\wamp\www\php-r-master\vendor\autoload.php';
这样应该就要会跑了,不过我手上没有 Windows 也没有 R,没办法自己验证一次...
==================================================
原理则是这样
PHP 的自动载入机制需要你写程式
[1]告诉 PHP 哪个 class 放哪里
这样 PHP 才知道要帮你 require 哪个档案。
一开始你会跳「找不到 class」的错误就是这个原因
而 composer 大概会帮你做这几件事情
- 帮你写好串自动载入机制的程式
- 就是那个 vendor/autoload.php
- 自动载入的规范主要是 PSR-0 跟 PSR-4
[2]
- 如果有用到其他人写的程式,半自动帮你安装
- composer install 主要是做这件事。虽然 autoload.php 也是这时候产生的
- 以这里来说其实没用到这功能
然後...「用到其他人写的程式,半自动帮你安装」这件事还有另外一层意义
例如你可以另外开一个资料夹,然後下
composer require kachkaev/php-r
把这整包东西直接安装进来,他会把程式放在 vendor/ 里面。只要你
include autoload.php 就会动
================================================================
不过....你真的照做的话会跳出一个错误讯息说
「Could not find package kachkaev/php-r at any version for
your minimum-stability (stable). Check the package spelling
or your minimum-stability」
翻成白话就是
「你要我装 kachkaev/php-r 的正式版,可是我没看到这东西的正式版的说
你是拼错字还是这东西没有正式版啊?」
所以你要修改(或在资料夹里面新增)composer.json,改成内容是
{"minimum-stability": "dev"}
告诉 composer 小朋友装开发中版本也可以
然後再跑一次 composer require kachkaev/php-r
=======================================================================
[1] 细节请查询 __autoload() 跟 spl_autoload()
[2] 关於这两个东西...
PSR-0
http://blog.mosil.biz/2012/08/psr-0-autoloading-standard/
PSR-4
https://github.com/PizzaLiu/PHP-FIG/blob/master/PSR-4-autoloader-cn.md
--
______ ____________________________________ _ _-_ _ ___
/ __||____________________________________| _|_|.---'---`---.|_|_ |___)
|___| Let it go! Let it go! \----._________.----/
___ Where no man has gone before! `. `]-[' ,'
| |__ _________________________________________ `.' _ `.' ________
\______||_________________________________________| |_(_)_| |________)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.27.91.120
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1433559019.A.B21.html
※ 编辑: GALINE (114.27.91.120), 06/06/2015 10:51:51
1F:推 aaa7513231: 谢谢你的讲解~!!!,确实是照你得步骤做就可以解决引用 06/06 15:08
2F:→ aaa7513231: 的问题了,但很可惜的是该专案用於Windows上有问题 06/06 15:08
3F:→ aaa7513231: 持续奋斗中啊!QQ... 06/06 15:09