Как настроить get_head (), get_foot () и другие файлы, такие как WordPress - PullRequest
1 голос
/ 13 октября 2010

Я пытаюсь перенести свой сайт на PHP и использовать тему WP на моем сайте, не меняя темы слишком сильно. Поэтому моя проблема заключается в том, что я хочу создать файл functions.php, как в Wordpress, который содержит некоторый код, который можно вызывать для загрузки верхнего и нижнего колонтитула темы моего сайта с каждой страницы. Также я хочу сохранить некоторые константы в другом файле, который будет использоваться на моем сайте для загрузки файлов из моих поддоменов, получения текущего года и т. Д. У меня есть базовая функция get_file() для загрузки файлов из моего домена статического содержимого, Но когда я пытаюсь запустить его, я получаю это:

Ошибка разбора : синтаксическая ошибка, неожиданная T_FUNCTION в / home / s0urc3 / public_html / includes / functions.php в строке 4

Вот содержимое моего functions.php и моего constants.php:

functions.php

<?php
include('constants.php')
/*Gets a file from the domain http://files01.s0urc3.ismywebsite.com/*/
function get_file($file)
{
FILE_ROOT + $file
}
get_file(images/bg.jpg)
?>

constants.php

<?php
/* CONSTANTS*/
define(FILE_ROOT, "http://files01.s0urc3.ismywebsite.com/")
define(HOME, "http://s0urc3.ismywebsite.com/")
define(BLOG_HOME, "http://blog.s0urc3.ismywebsite.com/")
define(FORUMS_HOME, "http://forums.s0urc3.ismywebsite.com/")
define(YEAR, getdate(year))
/*define(FILE_ROOT, "http://files01.s0urc3.ismywebsite.com/")*/
?>

Любая помощь будет принята с благодарностью.

Ответы [ 5 ]

4 голосов
/ 13 октября 2010

У вас практически нет строк без синтаксических ошибок.Вы никогда нигде не запутаетесь в этом пути.Найдите учебник и изучите PHP, прежде чем пытаться портировать ваш код.

В частности:

В PHP, как и в других языках стиля C, ваши операторы должны заканчиваться точкой с запятой:

// bad; missing semi-colon
include('constants.php')
// good:
include('constants.php');

Вы используете define неправильно.Символ для определения должен быть передан в define() в виде строки, прежде чем его можно будет использовать в качестве символа:

// bad; FILE_ROOT not yet defined, missing semi-colon
define(FILE_ROOT, "http://files01.s0urc3.ismywebsite.com/")
// good:
define('FILE_ROOT', "http://files01.s0urc3.ismywebsite.com/");

Строки должны быть заключены в одинарные или двойные кавычки:

// bad; missing quotes around string, missing semi-colon
get_file(images/bg.jpg)
// good:
get_file('images/bg.jpg');

Значения должны быть явно возвращены из функций через ключевое слово return, а строки объединяются с использованием оператора точка .:

// bad; Perform integer addition, doesn't return, no semi-colon
FILE_ROOT + $file
// good:
return FILE_ROOT . $file;

И примечание по стилю: вы прокомментировали get_file как «получение файла», чего он определенно не делает.Все, что он делает, это возвращает полный URL-адрес относительного URL, который вы передаете.Ваши имена функций и комментарии должны четко указывать вам, что они делают.В случае такой короткой служебной функции я бы пошел на что-то очень короткое:

// Return the fully-qualified URL for the given file
function url_for($file)
{
  return FILE_ROOT . $file
}
1 голос
/ 13 октября 2010

В PHP большинство строк заканчиваются точкой с запятой ';'Это то, что дает эти ошибки.

// should be
include('constants.php');
get_file('images/bg.jpg');
// etc.....
0 голосов
/ 13 октября 2010
  1. вы забыли точки с запятой в конце каждой строки, где вы должны использовать одну. (после определения, после включения, после вызова функции ...)
  2. конкатенация строк в PHP работает, используя ., а не +
0 голосов
/ 13 октября 2010

У вас должно быть 2 отдельных файла, константы и функции

Поместите данные в каждый соответственно и просто включите их и используйте

require_once 'constants.php';
require_once 'functions.php';

внутри функций пример макета должен быть таким:

function a()
{
    //...
}
function b()
{
    //...
}
function c()
{
    //...
}

с последующим использованием:

if(!user_session_active())
{
    location('home');
}
get_file('some_file.ext');
0 голосов
/ 13 октября 2010

Ваш синтаксис не имеет смысла, посмотрите, что делает ваша функция, это все равно, что просто написать:

function get_file($file)
{
    "http://files01.s0urc3.ismywebsite.com/" + $file
}

Это не PHP или что-то еще, что именно вы хотите сделать? Если вам нужен полный путь к файлу, он будет:

function get_file($file)
{
    return FILE_ROOT . $file;
}
// returns: http://files01.s0urc3.ismywebsite.com/images/bg.jpg
...