V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sy5587
V2EX  ›  PHP

菜鸟又来麻烦各位了

  •  
  •   sy5587 · 2020-05-25 19:09:42 +08:00 · 4636 次点击
    这是一个创建于 1403 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我 tpl 文件里用了一个 smarty3.1 的{html_options options=$AllLevel}为什么会报错啊, 错误代码:

    Warning: require(C:\wamp64\www\php8/public/Smarty_Internal_Compile_Html_Options.class.php): failed to open stream: No such file or directory in C:\wamp64\www\php8\configs\run.inc.php on line 24

    Fatal error: require(): Failed opening required 'C:\wamp64\www\php8/public/Smarty_Internal_Compile_Html_Options.class.php' (include_path='.;C:\php\pear') in C:\wamp64\www\php8\configs\run.inc.php on line 24

    要改 php.ini 里的 include_path 吗要怎么改啊

    Carlgao
        1
    Carlgao  
       2020-05-25 22:52:41 +08:00   ❤️ 1
    smarty? 好久没听到过这个了,已经是上古模板引擎了吧!
    sy5587
        2
    sy5587  
    OP
       2020-05-26 09:09:13 +08:00
    @Carlgao 新手啊网上找的视频有这个就学了
    lifeintools
        3
    lifeintools  
       2020-05-26 09:23:31 +08:00   ❤️ 1
    写成绝对路径。同时看下该路径下的文件夹 以及文件的权限
    sy5587
        4
    sy5587  
    OP
       2020-05-26 09:31:27 +08:00
    @lifeintools 我换了个低版本的 smarty 没事了,高版本单独引入 Smart 类也没事,但是我是在 public 文件夹下用一个 TPL 类 return new Smarty(),然后用 spl_autoload_register()加载 TPL 的方式载入就出现这个错误了
    sy5587
        5
    sy5587  
    OP
       2020-05-26 09:33:06 +08:00
    我换了个低版本的 smarty 没事了,高版本单独引入 Smart 类也没事,但是我是在 public 文件夹下用一个 TPL 类 return new Smarty(),然后用 spl_autoload_register()加载 TPL 的方式载入就出现这个错误了
    sy5587
        6
    sy5587  
    OP
       2020-05-26 09:37:00 +08:00
    我现在只能先用着低版本的了,有明白的大佬指点下我,感激不尽
    xnode
        7
    xnode  
       2020-05-26 09:39:52 +08:00   ❤️ 1
    php 高版本 有一些函数废弃了 造成 Smarty 不能用
    建议用 php5.6
    sy5587
        8
    sy5587  
    OP
       2020-05-26 09:45:17 +08:00
    @xnode 我的版本就是 5.6.25 啊
    ChoateYao
        9
    ChoateYao  
       2020-05-26 10:13:29 +08:00   ❤️ 1
    现在不用 smarty 了,而且前后端分离是大趋势,PHP 本身就是最好的模板引擎。

    建议学个现代点的框架,先从 Yii2 开始吧,Laravel 太花里胡哨了对待新人不好。
    sy5587
        10
    sy5587  
    OP
       2020-05-26 10:20:52 +08:00
    @ChoateYao 谢谢你我先记下了,我看的是李炎恢的 PHP 第三季视频,好像是几年前的了,网上也没找到新的,我先把这个视频过一遍吧
    ben1024
        11
    ben1024  
       2020-05-26 10:37:12 +08:00   ❤️ 1
    新手的话,检测下目录是否有对应文件,如果没有文件手动放一个文件
    to2false
        12
    to2false  
       2020-05-26 10:54:56 +08:00   ❤️ 1
    @ChoateYao #9 啥花里胡哨的,我看 yii 也没怎么适合入门
    Canon1014
        13
    Canon1014  
       2020-05-26 12:23:41 +08:00   ❤️ 1
    楼上的不要争了作为外人看 react 和 vue 争都觉得心痛,Yii 和 Laravel 还有很多人看不上但是还是很多人用的 TP 都学的挺好的反正也快,具体主攻哪个不还是看公司要求
    acrazing
        14
    acrazing  
       2020-05-26 17:04:23 +08:00   ❤️ 1
    PHP 本身就是一个很完备的模板语言, 没必要用 smarty 这种花里胡哨的东西, smarty 自己搞了一堆语法, 你事实上在学习另一门语言.
    sy5587
        15
    sy5587  
    OP
       2020-05-26 17:08:11 +08:00
    @acrazing 我现在照搬也搬不过去啊
    acrazing
        16
    acrazing  
       2020-05-26 17:12:14 +08:00
    @sy5587 我看你说在学习, 我的意思是你没必要学 smarty, 这是个累赘
    leoleoasd
        17
    leoleoasd  
       2020-05-26 17:15:14 +08:00   ❤️ 1
    你说用 spl_autoload_register 加载, 看上去是没用 composer 等包管理器. 还是建议先学 laravel. 现在生产没人用 smarty 了.

    并且 laravel 的 blade 的语法也比 smarty 的好很多.

    引用文件的时候, 用基于 __DIR__ 的相对路径引用. __DIR__是代码所在文件夹.
    sy5587
        18
    sy5587  
    OP
       2020-05-26 17:15:35 +08:00
    高版本的 smarty 有问题,低版本的问题更多,折腾一下午,好像是我 run.inc.php 里的自动加载类和 smarty 有冲突
    spl_autoload_register("_efc");
    function _efc($_className) {
    if (substr($_className, -6) == 'Action') {
    require ROOT_PATH.'/controller/'.$_className.'.class.php';
    } elseif (substr($_className, -5) == 'Model') {
    require ROOT_PATH.'/model/'.$_className.'.class.php';
    } elseif (substr($_className, -5) == 'Check') {
    require ROOT_PATH.'/check/'.$_className.'.class.php';
    } else {

    require ROOT_PATH.'/public/'.$_className.'.class.php';
    }
    }

    22 0.2376 3951688 class_exists ( ) ...\smarty_internal_templatecompilerbase.php:785
    23 0.2377 3951992 spl_autoload_call ( ) ...\smarty_internal_templatecompilerbase.php:785
    24 0.2385 3952048 _efc( ) ...\smarty_internal_templatecompilerbase.php:785

    Fatal error: require(): Failed opening required 'C:\wamp64\www\php8/public/Smarty_Internal_Compile_Html_Options.class.php' (include_path='.;C:\php\pear') in C:\wamp64\www\php8\configs\run.inc.php on line 27

    但是我不知道怎么改
    leoleoasd
        19
    leoleoasd  
       2020-05-26 17:15:51 +08:00
    laravel 可以看这个文档 https://learnku.com/docs/laravel/7.x
    同网站也有 laravel 的教程, 不过不知道质量如何.
    nocrush
        20
    nocrush  
       2020-05-26 17:18:31 +08:00   ❤️ 1
    找个好点的视频吧,然后你这些代码看起来是上古时期的代码
    sy5587
        21
    sy5587  
    OP
       2020-05-26 17:18:48 +08:00
    @leoleoasd 我学的时间不长啊,可以直接学框架吗
    sy5587
        22
    sy5587  
    OP
       2020-05-26 17:20:02 +08:00
    @nocrush 哈哈
    fiypig
        23
    fiypig  
       2020-05-26 17:22:15 +08:00   ❤️ 1
    想快速上手就直接熟悉语法后, 就框架吧 ,我以前就是 tp 入门
    sy5587
        24
    sy5587  
    OP
       2020-05-26 17:23:27 +08:00
    哎没有编程基础自学 PHP 好难啊
    putaozhenhaochi
        25
    putaozhenhaochi  
       2020-05-26 17:24:01 +08:00 via Android   ❤️ 2
    这个 PHP8 文件夹让我一度以为。。。
    leoleoasd
        26
    leoleoasd  
       2020-05-26 17:26:56 +08:00
    @sy5587 #21 可以的没问题
    sy5587
        27
    sy5587  
    OP
       2020-05-26 17:29:00 +08:00
    我先一个人静静,感谢大佬们的回复
    to2false
        28
    to2false  
       2020-05-26 17:37:11 +08:00   ❤️ 1
    既然自学,建议不要折腾 smarty 了,tp 的话也建议直接折腾高版本的,
    tp3 的也只是遇到存量项目需要维护的时候才去看看

    框架你如果要看 tp,建议直接上 tp6,然后 php 语法、composer 、psr 规范等这些知识点先去了解下
    k396656156
        29
    k396656156  
       2020-05-26 17:45:54 +08:00   ❤️ 1
    好像想在都不用这个 smarty 吧,我当年学习的时候过了一遍菜鸟教程的 php 语法,直接 laravel 学起来了,开始觉得很复杂,搞习惯的还比较方便。后面其他的框架都差不多
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1203 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:20 · PVG 07:20 · LAX 16:20 · JFK 19:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.