”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 我作为 Laravel 实习生的旅程

我作为 Laravel 实习生的旅程

发布于2024-08-06
浏览:873

My Journey as a Laravel Intern

通过塔米·阿莱姆

嗨,我是塔米·阿莱姆。让我带您经历作为 Laravel 实习生的激动人心的旅程。我的目标是获得行业经验,编写可读的代码,并深入理解框架。以下是这一切的经过,以及我面临的挑战和我一路上找到的解决方案。

在实习期间,我有三个主要目标:

行业经验:在专业环境中获得实践经验。

可读代码:编写干净、可维护且可读的代码。

框架理解:深入了解 Laravel 框架。

开发环境

我的旅程从设置开发环境开始。在这次实习之前,我使用前端架构与后端进行交互,要么通过 Blade 视图,要么通过与 Vite 捆绑的 JavaScript。所以,我并没有真正看到建立 CORS 之类的必要性。然后,我被介绍给了 Postman —— 哇,真是一个游戏规则改变者!

邮差

Postman 帮助我设置和编辑 HTTP 请求、传递参数和值以及管理身份验证和承载令牌。这拓宽了我对后端结构及其工作原理的理解。查看原始形式的数据并直接对其进行操作令人大开眼界。我发现看似复杂的后端操作比我最初想象的要简单。

作曲家

Composer 是另一个重要工具。我用它来安装软件包并严格遵守 PHP PSR-4 格式标准。当我严格地说时,我是认真的!哈哈。当我不遵循标准时,我遇到了错误,例如生成文档并意识到由于模型和表的额外空格或不正确的命名约定,我在命名空间中出现了错误。

项目设置

建立项目涉及几个关键步骤:

存储库管理

克隆存储库和设置我的环境一开始是相当困难的 — 哈哈,真是太棒了!有人向我介绍了 scribe:generate,这是一个生成文档的包。起初,我的反应是:“什么?!”运行特定类别的播种机是另一个挑战。与普通播种机相比,我不明白它们的用途,直到我意识到 php artisan db:seed --class=...Seeder 直接运行特定的播种机类,对于单独播种特定表或数据集很有用。

模型和数据处理

我突出显示了向模型和指定数据类型添加新属性时所需的参数。熟悉数据序列化和格式响应转换至关重要。我还学会了使用包含和默认包含来格式化特定数据,以及使用解析包含来将数据添加到响应中。

急切加载

预加载是我学到的美丽的事情之一。预加载不是在循环内执行新的 SQL 查询的延迟加载,而是执行单个查询来加载所有必要的数据。 with 助手对于高效的数据库查询至关重要,这让我研究了 Laravel 中可用的漂亮助手,它带来了多么大的变化!

查询范围和构建器

我使用控制器可用的查询范围来在转换数据之前获取数据。查询构建器也成为我简化数据检索的首选。

控制器

控制器处理各种请求类型(GET、POST、UPDATE)的基本逻辑。我学会了为 Scribe 文档编写端点和清晰的注释。使用操作将可重用代码提取到不同的控制器中,确保了干净的代码结构。在使用数据库时实现 try-catch 方法是另一个宝贵的教训。

观看次数

虽然没有广泛使用,但视图主要用于格式化邮件响应。

API开发

我学会了按照 RESTful 原则设计和实现 API,并使用 Laravel 内置的日志工具和 Postman 对其进行了测试。

这些知识进一步促使我构建和使用 Laravel 社交名流,集成 google auth 进行登录并使用 Laravel sainttum,实时显示在我的 GitHub 个人资料上。

挑战与解决方案

挑战

理解代码库最初很困难,特别是因为 Postman 中没有可用的收集路线。我必须构建它们并理解其结构,这有时需要额外的参数并减慢了我的开发过程。

我浅薄的 PHP 基础知识也影响了我的进步,导致我在任务上花费了额外的时间。

解决方案

为了克服这些挑战,我专注于学习基础知识,并通过在分配的任务之外在一个单独的分支工作进行练习。我深入了解 PHP,获取了诸如“Programming with GIO”、“PHP the Right Way”和 Laracasts  等资源 - 强烈推荐它们!

语法不记也没关系。哈哈,像这样的情况,我都是参考文档。阅读文档可以拓宽您对特定主题的理解。

总的来说,我与团队的合作经历非常出色。除了提供付费职位外,他们还提供理解和构建应用程序的帮助。与我合作的团队解释了要实现的任务,并在应对我面临的挑战时给出了快速响应。

版本声明 本文转载于:https://dev.to/tammy11/my-journey-as-a-laravel-intern-3bg8?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    为什么使用固定定位时,为什么具有100%网格板柱的网格超越身体?
    网格超过身体,用100%grid-template-columns 为什么在grid-template-colms中具有100%的显示器,当位置设置为设置的位置时,grid-template-colly修复了?问题: 考虑以下CSS和html: class =“ snippet-code”> g...
    编程 发布于2025-05-17
  • Python元类工作原理及类创建与定制
    Python元类工作原理及类创建与定制
    python中的metaclasses是什么? Metaclasses负责在Python中创建类对象。就像类创建实例一样,元类也创建类。他们提供了对类创建过程的控制层,允许自定义类行为和属性。在Python中理解类作为对象的概念,类是描述用于创建新实例或对象的蓝图的对象。这意味着类本身是使用类关...
    编程 发布于2025-05-17
  • 如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    如何从PHP中的Unicode字符串中有效地产生对URL友好的sl。
    为有效的slug生成首先,该函数用指定的分隔符替换所有非字母或数字字符。此步骤可确保slug遵守URL惯例。随后,它采用ICONV函数将文本简化为us-ascii兼容格式,从而允许更广泛的字符集合兼容性。接下来,该函数使用正则表达式删除了不需要的字符,例如特殊字符和空格。此步骤可确保slug仅包含...
    编程 发布于2025-05-17
  • 如何简化PHP中的JSON解析以获取多维阵列?
    如何简化PHP中的JSON解析以获取多维阵列?
    php 试图在PHP中解析JSON数据的JSON可能具有挑战性,尤其是在处理多维数组时。 To simplify the process, it's recommended to parse the JSON as an array rather than an object.To do...
    编程 发布于2025-05-17
  • 如何高效地在一个事务中插入数据到多个MySQL表?
    如何高效地在一个事务中插入数据到多个MySQL表?
    mySQL插入到多个表中,该数据可能会产生意外的结果。虽然似乎有多个查询可以解决问题,但将从用户表的自动信息ID与配置文件表的手动用户ID相关联提出了挑战。使用Transactions和last_insert_id() 插入用户(用户名,密码)值('test','test...
    编程 发布于2025-05-17
  • 在JavaScript中如何并发运行异步操作并正确处理错误?
    在JavaScript中如何并发运行异步操作并正确处理错误?
    同意操作execution 在执行asynchronous操作时,相关的代码段落会遇到一个问题,当执行asynchronous操作:此实现在启动下一个操作之前依次等待每个操作的完成。要启用并发执行,需要进行修改的方法。 第一个解决方案试图通过获得每个操作的承诺来解决此问题,然后单独等待它们: co...
    编程 发布于2025-05-17
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-05-17
  • 在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在程序退出之前,我需要在C ++中明确删除堆的堆分配吗?
    在C中的显式删除 在C中的动态内存分配时,开发人员通常会想知道是否有必要在heap-procal extrable exit exit上进行手动调用“ delete”操作员,但开发人员通常会想知道是否需要手动调用“ delete”操作员。本文深入研究了这个主题。 在C主函数中,使用了动态分配变量(H...
    编程 发布于2025-05-17
  • Java数组中元素位置查找技巧
    Java数组中元素位置查找技巧
    在Java数组中检索元素的位置 利用Java的反射API将数组转换为列表中,允许您使用indexof方法。 (primitives)(链接到Mishax的解决方案) 用于排序阵列的数组此方法此方法返回元素的索引,如果发现了元素的索引,或一个负值,指示应放置元素的插入点。
    编程 发布于2025-05-17
  • 使用jQuery如何有效修改":after"伪元素的CSS属性?
    使用jQuery如何有效修改":after"伪元素的CSS属性?
    在jquery中了解伪元素的限制:访问“ selector 尝试修改“:”选择器的CSS属性时,您可能会遇到困难。 This is because pseudo-elements are not part of the DOM (Document Object Model) and are th...
    编程 发布于2025-05-17
  • 如何使用FormData()处理多个文件上传?
    如何使用FormData()处理多个文件上传?
    )处理多个文件输入时,通常需要处理多个文件上传时,通常是必要的。 The fd.append("fileToUpload[]", files[x]); method can be used for this purpose, allowing you to send multi...
    编程 发布于2025-05-17
  • Java开发者如何保护数据库凭证免受反编译?
    Java开发者如何保护数据库凭证免受反编译?
    在java 在单独的配置文件保护数据库凭证的最有效方法中存储凭据是将它们存储在单独的配置文件中。该文件可以在运行时加载,从而使登录数据从编译的二进制文件中远离。使用prevereness class import java.util.prefs.preferences; 公共类示例{ 首选项...
    编程 发布于2025-05-17
  • Python读取CSV文件UnicodeDecodeError终极解决方法
    Python读取CSV文件UnicodeDecodeError终极解决方法
    在试图使用已内置的CSV模块读取Python中时,CSV文件中的Unicode Decode Decode Decode Decode decode Error读取,您可能会遇到错误的错误:无法解码字节 在位置2-3中:截断\ uxxxxxxxx逃脱当CSV文件包含特殊字符或Unicode的路径逃...
    编程 发布于2025-05-17
  • Spark DataFrame添加常量列的妙招
    Spark DataFrame添加常量列的妙招
    在Spark Dataframe ,将常数列添加到Spark DataFrame,该列具有适用于所有行的任意值的Spark DataFrame,可以通过多种方式实现。使用文字值(SPARK 1.3)在尝试提供直接值时,用于此问题时,旨在为此目的的使用column方法可能会导致错误。 df.with...
    编程 发布于2025-05-17
  • 人脸检测失败原因及解决方案:Error -215
    人脸检测失败原因及解决方案:Error -215
    错误处理:解决“ error:((-215)!empty()in Function Multultiscale中的“ openCV 要解决此问题,必须确保提供给HAAR CASCADE XML文件的路径有效。在提供的代码片段中,级联分类器装有硬编码路径,这可能对您的系统不准确。相反,OPENCV提...
    编程 发布于2025-05-17

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3