Php class in external file

Php create function in external php file

Solution 2: You can call external functions from a class, even if they are not enclosed in a class of their own: Global.php ExampleClass.php Although you probably wouldn’t have the in the actual class file. Solution 2: As @joseph told its correct and helped me, but in mycase i wanted to hide the content of the External Php file, Below is my code changes which had helped me !

Include methods from external php file in a class

You can’t. All class definition, including methods and fields must be on the same file. You can’t declare the same class in two different files.

Extending, or using traits (if you have PHP 5.4.x+), are your only options.

You can call external functions from a class, even if they are not enclosed in a class of their own:

Although you probably wouldn’t have the include in the actual class file.

Читайте также:  Убрать лишние символы из строки java

PHP Functions, The real power of PHP comes from its functions. PHP has more than 1000 built-in functions, and in addition you can create your own custom functions.

Chapter 4 — External PHP

Loading an external PHP file with an internal PHP include function by using jQuery’s ‘load()’

PHP can be run before jQuery grabs the content. Here is what I setup and tested.

test.html
go.php

And the result is that #feeds .innerHTML is «Hi». I would love more information/code in replicating the situation. It might help to take a peek at the jQuery load API documentation.

As @joseph told its correct and helped me, but in mycase i wanted to hide the content of the External Php file,
Below is my code changes which had helped me !

     Db file result    

My Php file had database connection so i had to hide it, db.php

 $textval = json_encode($json); $foo = "var peoplenames=" . $textval; file_put_contents('autocomplete-Files/'.$_SESSION['account_token'].'.js', $foo); echo ""; ?> 

Passing php array to javascript function from external php file, Your JSON string is likely to contain » , so of course you get a syntax problem when you insert that into onClick=»fill();» untreated.

How to make sure JS file runs in external php without including again?

Using php’s include_once should resolve your problem. This function ensures that the given file will only be included once.

Chapter 4 — External PHP, TUTORIALS : Learn PHP Programming for BeginnersDiscover the power of Code Reuse Duration: 7:43

Function within PHP file claims undefined when loaded from external file

If I understand you right, it will be because php functions do not traverse through ajax so you can not have the function on the index page and think that the ajax page then will also include that function. They need to be treated like individual pages. In order to fix the issue, you need to include the function in the login_form.php page as well. The easiest way to do it, is to remove it off the index.php page, make a new file:

/functions/generateFormToken.php

Then remove session_start(); off the index.php and instead create a config.php page that you will include in all your top-level php files:

Last, when you load your two pages, include the config page and include the function page.

Note: You should include the config page first thing on the page to load. The config can not load after html starts outputting. All your non-html code should go at the top before any content is output.

/php/login_form.php

  
">
Keep me logged in

PHP — File Inclusion, You can include the content of a PHP file into another PHP file before the server executes it. There are two PHP functions which can be used to included one

Источник

Выносим методы класса во внешний файл

Регулярно на PHP форумах встречается вопрос, как вынести часть методов класса в отдельный файл, и если у вас тоже возникал такой вопрос, значит что-то не так в вашем коде и пора что-то менять. Правильным решением будет логически сгруппировать методы в отдельные классы и, если требуется получить все методы в одном экземпляре класса, выполнить каскадное наследование:

class Base < /* */ >class Foo extends Base < /* */ >class Bar extends Foo < /* */ >$obj = new Bar(); 

Но если вы решили, что это все таки необходимо — у меня есть для вас решение.

Чтобы достигнуть постановлений цели нам понадобится немного магии а именно магический метод __call, который будет вызван при попытке доступа к методу недоступному в контексте объекта, функцию call_user_func_array для вызова пользовательской функции с массивом параметров, а так-же, как вспомогательный инструмент, класс ReflectionClass, его мы будем использовать для получения некоторой информации о классе, ну и еще несколько стандартных функций.

Алгоритм решения прост, когда происходит обращение к недоступному методу объекта, срабатывает магический метод __call, в который передаются имя метода и параметры, нам на основе этой информации остается подключить файл с нужной функцией и вызвать её. Файл MyClass.php:

class MyClass< public function __call( $method, $params = array() ) < // Получение имени класса $class_name = get_class( $this ); // Имя внешнего метода состоит из имени класса и имени метода $external_method_name = 'calss_' . $class_name . '_method_' . $method; // Проверяем, возможно функция ( внешний метод класса) уже есть, если нет, // пробуем подключить файл с функцией if( ! function_exists($external_method_name) ) < // Ожидается, что файл расположен рядом с файлом класса, местоположение // которого определим с помощью ReflectionClass $r = new ReflectionClass($class_name); $fn = dirname( $r->getFileName() ) . '/' . $external_method_name . '.php'; // Если файл существует, подключаем его if( file_exists( $fn ) ) < require_once( $fn ); >> // Проверяем, существует ли функция ( внешний метод класса) if( function_exists($external_method_name) ) < // В качестве первого параметра добавим текущий объект $this array_unshift( $params, $this ); // Вызываем функцию и возвращаем результат return call_user_func_array( $external_method_name, $params ); >else < // Функции не существует. Генерируем исключение trigger_error('Call to undefined method '.$class_name.'::'.$method.'()', E_USER_ERROR ); >> 

Внешний метод класса, представляет собой функцию, в качестве первого параметра которой передается сам объект. Файл calss_MyClass_method_hello.php:

function calss_MyClass_method_hello( $that )
require( 'MyClass.php' ); $object= new MyClass(); $object->hello(); 

Данное решение рабочее, но имеет недостаток, мы не можем из внешнего метода, обращаться к свойствам и методам помеченным, как private. Эту проблему можно обойти расширив метод __call для приватных методов ( только для php >= 5.3 ) и добавив пару магических методов __get и __set для приватных свойств. Магические методы __get и __set вызываются при попытке доступа к свойствам недоступных в контексте объекта. Следует учитывать что приватные методы и свойства должны быть доступны только для внешних методов класса и не должны быть доступны из других мест, с этим нам поможет справиться функция debug_backtrace. Еще к недостаткам данного метода можно отнести и то, что внешние методы класса нельзя сделать приватными.

Далее я покажу, как расшарить приватные свойства для внешнего метода.
Добавим пару приватных свойств в класс:

private $_message = 'Hello'; private $_external_methods = array(); // Будем хранить имена функций, для которых разрешен доступ 

Изменим немного метод __call, а именно секцию второй проверки существования функции:

// Проверяем, существует ли функция ( внешний метод класса) if( function_exists($external_method_name) ) < // Запомним имя функции, как собственный метод $this->_external_methods[ $external_method_name ] = TRUE; // В качестве первого параметра добавим текущий объект $this array_unshift( $params, $this ); // Вызываем функцию и возвращаем результат return call_user_func_array( $external_method_name, $params ); > else < // Функции не существует. Генерируем исключение trigger_error('Call to undefined method '.$class_name.'::'.$method.'()', E_USER_ERROR ); >

Получение значения приватного свойства:

public function __get( $var ) < // Получение имени класса $class_name = get_class( $this ); // Получим информацию о месте вызова метода __get $bt = next( debug_backtrace() ); // Проверим является ли функция внешним членом класса if( $var !== '_external_methods' && count($bt) && in_array( $bt['function'], $this->_external_methods )) < // Проверяем существует ли запрошенное свойство среди свойств класса if( array_key_exists( $var, get_class_vars( $class_name ) ))< // Ворачиваем результат return $this->; > else < // Совйство не найдено. Генерируем исключение trigger_error('Undefined property '.$class_name.'::$'.$var.''); >> else < // Доступ запрещен. Генерируем исключение trigger_error('Cannot access private property '.$class_name.'::$'.$var.'', E_USER_ERROR); >> 
public function __set( $var, $val ) < // Получение имени класса $class_name = get_class( $this ); // Получим информацию о месте вызова метода __set $bt = next( debug_backtrace() ); // Проверим является ли функция внешним членом класса if( $var !== '_external_methods' && count($bt) && in_array( $bt['function'], $this->_external_methods )) < // Проверяем существует ли запрошенное свойство среди свойств класса if( array_key_exists( $var, get_class_vars( $class_name ) ))< // Изменяем значение свойства $this-> = $val; > else < // Совйство не найдено. Генерируем исключение trigger_error('Undefined property '.$class_name.'::$'.$var.''); >> else < // Доступ запрещен. Генерируем исключение trigger_error('Cannot access private property '.$class_name.'::$'.$var.'', E_USER_ERROR); >> 

Изменим код внешнего метода:

function calss_MyClass_method_hello( $that, $message = '' ) < // Меняем приватное свойство $that->_message = $message; // Получаем значение свойства и выводим на экран echo( $that->_message ); > 
require( 'MyClass.php' ); $object= new MyClass(); // Вызов внешнего метода $object->hello( 'Hello World. ' ); // Попытка доступа к приватному свойству не из объекта // и не из внешнего метода класса вызовет исключение echo( $object->_message ); 

Цель достигнута. Доступ к приватным методам делается по принципу свойств, но в PHP версии ниже 5.3 этот трюк не сработает, магический метод __call не будет вызван, вместо этого сразу вызывается исключение.

Источник

Syntax for calling a function within a PHP class located in an external file

Have you considered using the OOP version of MYSQLi? It’s important to distinguish between the OOP and procedural versions of mysqli. When creating a file that holds only a class, it’s better to name it appropriately. Naming it incorrectly may suggest that it will establish a connection when included, which is not the case. One solution is to use the procedural version of mysqli for executing system functions, while the other solution is to create a PHP command function file and place it in the application/library folder. You can then add the file to autoload.php in the library and use it anywhere. Thank you to everyone who provided input.

Return function on a external php file

At the time you’re calling

Due to the headers being already sent in login.php , header(‘Location:’) will not function properly.

Before displaying any output, make sure to include the necessary code. In case of an error, check the log for the code labeled Warning: Cannot modify header information — headers already sent by .

It appears that the file is incorporated into a layout or similar, meaning that your login() request must be made prior to that.

Could you share the error message you’re seeing? Additionally, consider including the following command at the start of your PHP files:

// Report all PHP errors error_reporting(E_ALL); 

You will be able to identify any potential errors that have occurred.

Including external php files and using functions from, When you include a script, all the variables in the included script will run as if they were inline, inside the including script.. Essentially, just imagine all that code is inside validate.php, and it will run as if it were.. There is a gotcha to watch out for here — if function.php is in a different directory to validate.php, the include inside validate.php which asks for db_conn.php will Code samplesession_start();$key = $_POST[‘license_key’];include(‘function.php’);if (validate($key))

PHP Calling a function inside a class in an external file, Syntax?

Simply append return $connect; to function mainConnect()< and you'll be good to go.

Why haven’t you utilized the object-oriented version of MYSQLi?

class DBController < private $db; private $servername = "localhost"; private $username = "root"; private $password = ""; private $database = "mydatabase"; function __construct()< $this->db = new mysqli($this->servername, $this->username, $this->password); $this->db->select_db($this->database); > function db()< return $this->db; > > $connection = new DBController(); #now instead of using mysqli_query(); $connection->db()->query('SQL QUERY'); 

A name for a file that contains only a class should be as follows:

Prefer DBController.php over CreateConnection.php .

The name of the file may imply that it establishes a connection upon inclusion, but that is not actually the case.

Php function call from external PHP, I believe you can do that with changing some settings on your server. I never thought of including a php file which is on another domain. You could use open_dir = on, and include the file with using exact path of it. Let’s say this is the domain where you have external.php to include; …

Execute external php file using exec()

The exec command should only be used for system functions and not for running scripts. Refer to the manual at http://php.net/manual/de/function.exec.php for more information.

In order to accomplish your goal, you may provide the path to the PHP executable and include the script as a parameter in the following manner:

It may function properly, but the location of your php executable is unknown to me. Hence, kindly modify it as per your location.

According to comments from other users, there’s no need to use exec() in this scenario. Simply apply include to the file instead.

In any case, the function associated with exec() executes an external program. It’s worth noting that .php files, while not programs themselves, are scripts that are executed by a program called php.

exec('php ' . $path, $output,$return); 

Sometimes, php may necessitate providing the complete path to its executable in case it is not accessible universally.

Check out the documentation for the «exec» function in PHP at the official PHP website.

exec("php execute.php > /dev/null &"); 

solved my problem..Thanks all

How to use external functions in php?, I’m making several webpage which uses a single function in php a lot. I’m wondering how I can put this function in an external file and use it (I tried include, but it seems like it doesn’t work that way), like putting all javascript in one file and put it in the header. Thanks

Call a function from external PHP in Controller codeigniter 4

To use a PHP command function file anywhere, simply create it in the application/library folder and add it to the autoload.php in the library.

Html — Return function on a external php file, Return function on a external php file. I’m trying do develop a simple log in form in order to learn php. I’ve created the form and a function which send a query to a mysql database to retrieve username and password (stored in md5 encryption) and control it with data inserted by the user. The problem is that this …

Источник

Оцените статью