使用 view('users.create')和使用 view ('users/create') 有区别吗?如果有区别具体是什么呢

如题所示 :)
如果我使用view('users.create')来给注册一个视图,和我使用view('users/create')注册一个视图有区别吗

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

突然看到了这个问题,还真没想过,因为以前一直使用的是 `view('users.create') 这种方式。

查看了下源码,还真没什么区别,不过建议使用 . , 不过使用 / 也不影响什么。

原因:

  1. laravel/framework/src/Illuminate/Foundation/helpers.php找到了 view() 函数

  2. 发现它返回了一个 Illuminate\Contracts\View\Factory->make()

  3. 然后在这个类中找到 make() 方法中这样 $view = $this->normalizeName($view) 处理的模板名称

  4. 找到 normalizeName() 方法,返回了一个 ViewName::normalize($name)

  5. 再到 laravel/framework/src/Illuminate/View/ViewName.php 中找到 normalize 方法

  6. 现在就明白了,它 return str_replace('/', '.', $name)

结论:

写那种方式都无所谓,不过即使写的是 users/create,也会被替换成 users.create

5年前 评论
讨论数量: 11

突然看到了这个问题,还真没想过,因为以前一直使用的是 `view('users.create') 这种方式。

查看了下源码,还真没什么区别,不过建议使用 . , 不过使用 / 也不影响什么。

原因:

  1. laravel/framework/src/Illuminate/Foundation/helpers.php找到了 view() 函数

  2. 发现它返回了一个 Illuminate\Contracts\View\Factory->make()

  3. 然后在这个类中找到 make() 方法中这样 $view = $this->normalizeName($view) 处理的模板名称

  4. 找到 normalizeName() 方法,返回了一个 ViewName::normalize($name)

  5. 再到 laravel/framework/src/Illuminate/View/ViewName.php 中找到 normalize 方法

  6. 现在就明白了,它 return str_replace('/', '.', $name)

结论:

写那种方式都无所谓,不过即使写的是 users/create,也会被替换成 users.create

5年前 评论

突然看到了这个问题,还真没想过,因为以前一直使用的是 `view('users.create') 这种方式。

查看了下源码,还真没什么区别,不过建议使用 . , 不过使用 / 也不影响什么。

原因:

  1. laravel/framework/src/Illuminate/Foundation/helpers.php找到了 view() 函数

  2. 发现它返回了一个 Illuminate\Contracts\View\Factory->make()

  3. 然后在这个类中找到 make() 方法中这样 $view = $this->normalizeName($view) 处理的模板名称

  4. 找到 normalizeName() 方法,返回了一个 ViewName::normalize($name)

  5. 再到 laravel/framework/src/Illuminate/View/ViewName.php 中找到 normalize 方法

  6. 现在就明白了,它 return str_replace('/', '.', $name)

结论:

写那种方式都无所谓,不过即使写的是 users/create,也会被替换成 users.create

5年前 评论

@broqiang 十分感谢 :+1:

5年前 评论

@broqiang 那直接用users/create不就行了,作者这么干不是多此一举么?

5年前 评论

@dfsd534 个人觉得是为了优雅吧,毕竟现在主流模板都支持 . 语法,不过作者怎么想的不清楚,不认识作者。

5年前 评论

@broqiang 的确,看源码可以解决很多问题,不用死记硬背

5年前 评论

$view = $this->normalizeName($view) 中分隔符ViewFinderInterface::HINT_PATH_DELIMITER 是 ‘::’
$delimiter = ViewFinderInterface::HINT_PATH_DELIMITER;
if (strpos($name, $delimiter) === false) {
return str_replace('/', '.', $name);
}
这个判定有什么意义?是view包其它地方有使用到 ‘::’ 请高手解疑,谢谢!

5年前 评论

有编码规范吗, 个人认为 view('users/create') 更符合常识,毕竟是路径。

5年前 评论

@broqiang 老兄,我想问一下你是怎么看源码的?我如果一直用CTRL+左键点击方法的方式,最后都不知道跳转到啥莫名其妙的地方去了,真心求教!

5年前 评论

@jeff_coseibai 就是一步一步追踪,用 sublime 的时候就把打开过的不关闭,用 phpstorm 的时候方便一点,可以前跳和返回

5年前 评论

请问用 vscode 怎么跳转函数?

谢谢!

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!