我正在尝试进入OOP开发并转向此处,因为我厌倦了搜索网络,只查找关于什么类以及它们如何从彼此继承的基本信息 - 我理解。
我还不明白的是,所有这些类如何存储在不同的文件中,以文件夹结构为中心,然而你需要做的就是在代码中提到它的名字。这是如何工作的?
在相关的说明中,如果有人可以推荐一本好的书或在线教程,它将为OOP(最好是基于php)提供良好的基础,我将非常感激。
答案 0 :(得分:6)
PHP具有根据您拨打的电话自动加载文件的功能。 PHP: Autoloading Objects是您在这件事上的最终资源。
答案 1 :(得分:4)
技术答案为PHP Autoloading。
实施答案如下:
使用的一种常用方法与文件夹结构相关的类名称有关。那里有文章,但这里有一个简短的总结:
设置自动加载代码时,请使用类名并用斜杠替换下划线。这样,您就可以在文件夹中组织课程。
例如:
类名:Database_Provider_MySQL
文件:Database / Provider / MySQL.php
因此,在自动加载中,您将获取传入的类名,用斜杠替换下划线。然后包含该特定文件。
这实现了您要完成的任务,您只需通过创建一个新的实例来加载一个类。您永远不必对这些类使用include语句。
请记住不要深入到最后6级以上。我认为3到5之间是一个很好的最大值。
此外,这确实要求每个文件只保留1个类(类似于Java)。虽然看起来不方便,但它使定位代码变得更加容易。
答案 2 :(得分:2)
我有一句话,虽然我是PHP的粉丝(轻描淡写)(我只想投票给我,我不在乎!有一天我们会被接受;-),PHP真的不是你想要的道路学习OOP时走下去。
PHP做的事情,好吧,不同。不同是好的,不要误会我的意思,我喜欢与众不同,但这也是不同寻常的。如果你问我,非常规,也很好,几乎是谷歌的同义词,但我们不是生活在一个非传统的世界!你不能只是走到某个人面前说; “嘿,我知道OOP,我是用PHP学习的”。它可能押韵,但人们不会在事后认真对待你。不要问我为什么,但它和黄香蕉一样真实。我去过那儿。
因此,如果您想学习传统的OOP,请尝试使用Java。它和他们来的一样传统(既不坏也不好)。
老实说,我从未在20个句子的帖子里多次支持自己。不过要看马'代表。 :-D
答案 3 :(得分:2)
PHP的include_path配置设置告诉PHP要查找的文件目录。
如果您这样做:
<?php include 'MyClass.php'; ?>
然后PHP在当前目录中搜索“MyClass.php”,然后搜索include_path上的任何目录,如果它找不到该文件。许多类库都是这样的:
<?php
// Set the ini page to the base package directory
ini_set('include_path', ini_get('include_path') . PATH_SEPARATOR . dirname(__FILE__));
// Now, in all of your sub-directories, you can still do things like this:
include 'Subdirectory/Anothersub/AnotherClass.php';
// Now use the class
$obj = new AnotherClass();
?>
自动加载可以进一步简化:http://us.php.net/autoload
其他库只包含在基本包文件中使用的所有文件,因此所有这些类都可以立即使用。
答案 4 :(得分:2)
不同的语言/框架以不同的方式执行,但它必须归结为内置的默认位置列表和/或您可以指定查看位置(如何再次执行此操作取决于语言/框架) 。我知道这个问题被标记为php,但问题并没有特别提到php,所以我想给出一个稍微更一般的答案
答案 5 :(得分:1)
当我的研究工作陷入困境时,我发现查看现有代码非常有帮助。有许多脚本,包,框架和应用程序遵循优秀的PHP编码实践,可以从中学习和学习。关于SO的几个问题指出了一些好的问题。
到目前为止,我最喜欢的是Zend Framework。
答案 6 :(得分:0)
并且在相关的说明中,如果有人可以 推荐一本好书或在线 教程将提供一个好的 OOP的基础(最好是php 我非常感激。
答案 7 :(得分:0)
您所描述的内容与面向对象编程本身无关。它只是某些特定语言的一个特征。这些语言是通过对文件的存储方式实施某种约定来实现的(例如,类foo.bar.quux
可能必须位于foo / bar / quux.py的某个标准位置。
答案 8 :(得分:0)
http://www.headfirstlabs.com/books/hfooad/
首先面向对象的分析和设计。 Head First是一本很棒的书系列,内容简单但却非常有用。他们向您展示信息的整个方式非常棒。他们甚至可能会有一些面向对象的php书籍!