我目前正在开发一个PHP Web应用程序,我想知道包含文件(include_once)的最佳方式是什么,它仍然是可维护的代码.通过maintanable我的意思是,如果我想移动一个文件,重构我的应用程序以使其正常工作是很容易的.
我有很多文件,因为我尝试了很好的OOP实践(一个类=一个文件).
这是我的应用程序的典型类结构:
namespace Controls
{
use Drawing\Color;
include_once '/../Control.php';
class GridView extends Control
{
public $evenRowColor;
public $oddRowColor;
public function __construct()
{
}
public function draw()
{
}
protected function generateStyle()
{
}
private function drawColumns()
{
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在研究我的第一个MVC框架,并希望为BASE_PATH,APP_PATH,LIB_PATH和PUBLIC_PATH定义4个常量.我的文件结构如下所示:
/
/app
/controllers
/models
/views
/config
/db
/lib
/public_html
/css
/js
/img
Run Code Online (Sandbox Code Playgroud)
我的index.php文件位于public_html目录中.目前有以下代码:
error_reporting(E_ALL);
define('BASE_PATH',dirname(realpath(__FILE__)) . "/../");
define('APP_PATH',dirname(realpath(__FILE__)) . "/../app/");
define('LIB_PATH',dirname(realpath(__FILE__)) . "/../lib/");
define('PUBLIC_PATH',dirname(realpath(__FILE__)) . "/");
require LIB_PATH . 'core.php';
Run Code Online (Sandbox Code Playgroud)
这是有效的,但我觉得必须有一个更好的方法,没有所有的"..".任何建议或这是最好的方式吗?让我知道.谢谢!
回答
感谢@fireeyedboy和@KingCrunch,我想出了我想要的解决方案.这是我的最终代码:
define('PUBLIC_PATH', dirname(__FILE__) . "/");
define('BASE_PATH', dirname(PUBLIC_PATH) . "/");
define('APP_PATH', BASE_PATH . "app/");
define('LIB_PATH', BASE_PATH . "lib/");
Run Code Online (Sandbox Code Playgroud) 我在Xcode中编译时收到"找不到文件"的错误.我的路径是相对于$ SRCROOT指定的,似乎是正确识别的.有什么问题?
我正在尝试使用CMake进行C++存储库,但是我遇到了一些麻烦,试图在没有大量额外CMake代码的情况下轻松地在同一源代码树中构建针对库的应用程序.
源树的布局基本如下:
ROOT
libs/
lib1/
lib2/
lib3/
apps/
app1/
app2/
app3/
Run Code Online (Sandbox Code Playgroud)
这些库彼此独立,并且应用程序可以链接到一个或多个库.
目前我有一个根CMakeLists.txt,它将每个应用程序和库列为子目录,这样如果更改了库并重建了应用程序,那么库也是如此.这工作正常,CMake链接它,而我不必指定库的位置,但我没有看到为包含目录做类似的事情的方法.
有没有一种常见的方法来处理这个问题?我不希望每个应用程序的CMakeLists.txt都必须手动列出它需要的库的路径.
当我从readme文件中红色时,openlayers.js有多种选择来包含文件和主题.
我想要的是使用lightest solution of openlayers.js文件.
我openlayers.light.js在我的应用程序中包含了它,它创建了地图但没有显示它们,请检查:

我忘了包含其他一些文件吗?
我的结构结构如下:
/vendor
/js
openlayers.light.js
/img
/theme
Run Code Online (Sandbox Code Playgroud)
如何显示地图图层?
这openlayers.light.js也适用于移动设备(一旦解决了这个问题:P)?或者我也需要包括在内openlayers.mobile.js?
这是不使用openlayers.light.js但使用openlayers.js(740kb)的代码:
var _element = "#map";
var map = new OpenLayers.Map (_element, {
controls: [
new OpenLayers.Control.Navigation({
dragPanOptions: {
enableKinetic: true
}
}),
new OpenLayers.Control.Zoom()
],
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326")
});
var lonLat = new OpenLayers.LonLat(_lon, _lat).transform (
new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
new OpenLayers.Projection("EPSG:900913") // to Spherical Mercator Projection …Run Code Online (Sandbox Code Playgroud) 我想让g ++/gcc告诉我非系统的所有路径#include in C++ build.事实证明,这是一个艰难的搜索,因为谷歌通过十种不同的方式解释它.
我想要这些文件名和路径,以便我可以将它们添加到Exuberant CTAGS的搜索路径中.我们有一个庞大的项目,如果我在整个事情上使用ctags,生成标签文件大约需要半个小时,编辑器查找的时间也差不多.
我们使用CMakeLisats进行编译.如果有一个指令我可以粘贴到CMakeLists.txt,这将是额外的精彩.
我真的不需要默认路径和文件名,Johnathan Wakely 在这里提供了一个很好的工具.我认为这几乎涵盖了这是一个交叉编译工作的事实.我也不需要跨系统文件.
如何在单个视图文件(不在application.js中)中包含位于vendor/assets/javascripts中的javascript文件?
某种javascript_include_tag?请帮我解释语法
我尝试过以下内容并不起作用:
谢谢
我的项目具有以下目录结构:
.
??? Makefile
??? pxd
??? pyx
? ??? Landscaping.pyx
? ??? Shrubbing.pxd
? ??? Shrubbing.pyx
??? setup.py
Run Code Online (Sandbox Code Playgroud)
但是,如果我移到Shrubbing.pxd其他任何地方,例如pxd/,我将收到以下错误:
Error compiling Cython file:
------------------------------------------------------------
...
import pyx.Shrubbing
cimport Shrubbing
^
------------------------------------------------------------
pyx/Landscaping.pyx:2:8: 'Shrubbing.pxd' not found
Error compiling Cython file:
------------------------------------------------------------
...
import pyx.Shrubbing
cimport Shrubbing
cdef Shrubbing.Shrubbery sh
^
------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为setup.py我有:
from distutils.core import setup, Extension
from Cython.Build import cythonize
setup(ext_modules=cythonize([
Extension(
'pyx.Landscaping',
sources=["pyx/Landscaping.pyx"],
include_dirs=['pxd']), # <-- HERE
Extension('pyx.Shrubbing', sources=["pyx/Shrubbing.pyx"])
]))
Run Code Online (Sandbox Code Playgroud)
明确指定的新目录Shrubbing.pxd …
在CMake 3.8版中,引入了对CUDA语言的原生支持。当项目将CUDA作为其语言之一时,CMake将继续查找CUDA(例如,它找到nvcc二进制文件)。
只要您只编译CUDA代码-就足够了。但是,如果您想在该项目中编译C ++目标怎么办?CUDA包含不是-I自动生成的,并且CMakeCache.txt似乎在任何地方都不包含CUDA包含路径。
find_package(CUDA 9.0 REQUIRED)即使CMake本身已经找到CUDA,我是否真的必须运行某些程序?或者-我可以通过其他方式获取include目录吗?
在更新到macOS Mojave之后,OS在/usr/local/include使用clang++(从命令行,即Xcode外部)进行编译时,无法在其中搜索标头。请注意,/usr/local/include对于我的系统,CMake将在其中安装标头的默认路径,因此对于手动包含此标头感到很奇怪。
顺便说一句,我还执行了全新安装,导致了同样的问题。在后者中,我具有以下顺序:
xcode-select --install。该问题似乎与该问题类似,建议该问题:
xcode-select --install。这显然不能解决问题。通过重新运行install命令坚持这一点会导致error: command line tools are already installed。xcode-select -p。它显然应该读为/Library/Developer/CommandLineTools,而不是 /Applications/Xcode.app/Contents/Developer我的情况。建议是“从Applications目录中删除[sic] Xcode”,这似乎有些残酷。如何解决呢?