好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

phpcompat的简单介绍

很多站长朋友们都不太清楚phpcompat,今天小编就来给大家整理phpcompat,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 php函数如何返回数组啊, 比如, 2、 php 内置大概多少个常量 3、 Sublime Text,php代码格式化插件codeformatter 设置PHP代码格式时报错 怎么处理 4、 php rpc好用吗,有什么优缺点?php rpc框架哪个好? php函数如何返回数组啊, 比如,

$a = array();

$a[] = "项目";

$a[] = "标题";

$a[] = "时间";

return $a

php 内置大概多少个常量

每个版本的内置常量都例不有同的,要看具体的版本。这些是我收集到的。大概有250个左右吧。参考参考。

PHP_VERSION (string)

PHP_MAJOR_VERSION (integer)    可用自: PHP 5.2.7. 

PHP_MINOR_VERSION (integer)    可用自: PHP 5.2.7. 

PHP_RELEASE_VERSION (integer)    可用自: PHP 5.2.7. 

PHP_VERSION_ID (integer)    可用自: PHP 5.2.7. 

PHP_EXTRA_VERSION (string)    可用自: PHP 5.2.7. 

PHP_ZTS (integer)    可用自: PHP 5.2.7. 

PHP_DEBUG (integer)    可用自: PHP 5.2.7. 

PHP_MAXPATHLEN (integer)    可用自: PHP 5.3.0. 

PHP_OS (string)

PHP_SAPI (string)    可用自: PHP 4.2.0. 参见: php_sapi_name(). 

PHP_EOL (string)    可用自: PHP 4.3.10 and PHP 5.0.2 

PHP_INT_MAX (integer)    可用自: PHP 4.4.0 and PHP 5.0.5 

PHP_INT_SIZE (integer)    可用自: PHP 4.4.0 and PHP 5.0.5 

DEFAULT_INCLUDE_PATH (string)

PEAR_INSTALL_DIR (string)

PEAR_EXTENSION_DIR (string)

PHP_EXTENSION_DIR (string)

PHP_PREFIX (string)    可用自: PHP 4.3.0 

PHP_BINDIR (string)

PHP_LIBDIR (string)

PHP_DATADIR (string)

PHP_SYSCONFDIR (string)

PHP_LOCALSTATEDIR (string)

PHP_CONFIG_FILE_PATH (string)

PHP_CONFIG_FILE_SCAN_DIR (string)

PHP_SHLIB_SUFFIX (string)    可用自: PHP 4.3.0 

PHP_OUTPUT_HANDLER_START (integer)

PHP_OUTPUT_HANDLER_CONT (integer)

PHP_OUTPUT_HANDLER_END (integer)

PHP_WINDOWS_VERSION_MAJOR (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_MINOR (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_BUILD (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_PLATFORM (integer)   可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_SP_MAJOR (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_SP_MINOR (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_SUITEMASK (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_VERSION_PRODUCTTYPE (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_NT_DOMAIN_CONTROLLER (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_NT_SERVER (integer)    可用自: PHP 5.3.0 

PHP_WINDOWS_NT_WORKSTATION (integer)    可用自: PHP 5.3.0 

E_ERROR (integer)

E_WARNING (integer)

E_PARSE (integer)

E_NOTICE (integer)

E_CORE_ERROR (integer)

E_CORE_WARNING (integer)

E_COMPILE_ERROR (integer)

E_COMPILE_WARNING (integer)

E_USER_ERROR (integer)

E_USER_WARNING (integer)

E_USER_NOTICE (integer)

E_DEPRECATED (integer)    可用自: PHP 5.3.0 

E_USER_DEPRECATED (integer)    可用自: PHP 5.3.0 

E_ALL (integer)

E_STRICT (integer)    可用自: PHP 5.0.0 

__COMPILER_HALT_OFFSET__ (integer)    可用自: PHP 5.1.0 

TRUE (boolean)    参见: Booleans. 

FALSE (boolean)    参见: Booleans. 

NULL (boolean)    参见: Null. 

EXTR_OVERWRITE (integer)

EXTR_SKIP (integer)

EXTR_PREFIX_SAME (integer)

EXTR_PREFIX_ALL (integer)

EXTR_PREFIX_INVALID (integer)

EXTR_PREFIX_IF_EXISTS (integer)

EXTR_IF_EXISTS (integer)

SORT_ASC (integer)

SORT_DESC (integer)

SORT_REGULAR (integer)

SORT_NUMERIC (integer)

SORT_STRING (integer)

CASE_LOWER (integer)

CASE_UPPER (integer)

COUNT_NORMAL (integer)

COUNT_RECURSIVE (integer)

ASSERT_ACTIVE (integer)

ASSERT_CALLBACK (integer)

ASSERT_BAIL (integer)

ASSERT_WARNING (integer)

ASSERT_QUIET_EVAL (integer)

CONNECTION_ABORTED (integer)

CONNECTION_NORMAL (integer)

CONNECTION_TIMEOUT (integer)

INI_USER (integer)

INI_PERDIR (integer)

INI_SYSTEM (integer)

INI_ALL (integer)

M_E (float)

M_LOG2E (float)

M_LOG10E (float)

M_LN2 (float)

M_LN10 (float)

M_PI (float)

M_PI_2 (float)

M_PI_4 (float)

M_1_PI (float)

M_2_PI (float)

M_2_SQRTPI (float)

M_SQRT2 (float)

M_SQRT1_2 (float)

CRYPT_SALT_LENGTH (integer)

CRYPT_STD_DES (integer)

CRYPT_EXT_DES (integer)

CRYPT_MD5 (integer)

CRYPT_BLOWFISH (integer)

DIRECTORY_SEPARATOR (string)

SEEK_SET (integer)

SEEK_CUR (integer)

SEEK_END (integer)

LOCK_SH (integer)

LOCK_EX (integer)

LOCK_UN (integer)

LOCK_NB (integer)

HTML_SPECIALCHARS (integer)

HTML_ENTITIES (integer)

ENT_COMPAT (integer)

ENT_QUOTES (integer)

ENT_NOQUOTES (integer)

INFO_GENERAL (integer)

INFO_CREDITS (integer)

INFO_CONFIGURATION (integer)

INFO_MODULES (integer)

INFO_ENVIRONMENT (integer)

INFO_VARIABLES (integer)

INFO_LICENSE (integer)

INFO_ALL (integer)

CREDITS_GROUP (integer)

CREDITS_GENERAL (integer)

CREDITS_SAPI (integer)

CREDITS_MODULES (integer)

CREDITS_DOCS (integer)

CREDITS_FULLPAGE (integer)

CREDITS_QA (integer)

CREDITS_ALL (integer)

STR_PAD_LEFT (integer)

STR_PAD_RIGHT (integer)

STR_PAD_BOTH (integer)

PATHINFO_DIRNAME (integer)

PATHINFO_BASENAME (integer)

PATHINFO_EXTENSION (integer)

PATH_SEPARATOR (string)

CHAR_MAX (integer)

LC_CTYPE (integer)

LC_NUMERIC (integer)

LC_TIME (integer)

LC_COLLATE (integer)

LC_MONETARY (integer)

LC_ALL (integer)

LC_MESSAGES (integer)

ABDAY_1 (integer)

ABDAY_2 (integer)

ABDAY_3 (integer)

ABDAY_4 (integer)

ABDAY_5 (integer)

ABDAY_6 (integer)

ABDAY_7 (integer)

DAY_1 (integer)

DAY_2 (integer)

DAY_3 (integer)

DAY_4 (integer)

DAY_5 (integer)

DAY_6 (integer)

DAY_7 (integer)

ABMON_1 (integer)

ABMON_2 (integer)

ABMON_3 (integer)

ABMON_4 (integer)

ABMON_5 (integer)

ABMON_6 (integer)

ABMON_7 (integer)

ABMON_8 (integer)

ABMON_9 (integer)

ABMON_10 (integer)

ABMON_11 (integer)

ABMON_12 (integer)

MON_1 (integer)

MON_2 (integer)

MON_3 (integer)

MON_4 (integer)

MON_5 (integer)

MON_6 (integer)

MON_7 (integer)

MON_8 (integer)

MON_9 (integer)

MON_10 (integer)

MON_11 (integer)

MON_12 (integer)

AM_STR (integer)

PM_STR (integer)

D_T_FMT (integer)

D_FMT (integer)

T_FMT (integer)

T_FMT_AMPM (integer)

ERA (integer)

ERA_YEAR (integer)

ERA_D_T_FMT (integer)

ERA_D_FMT (integer)

ERA_T_FMT (integer)

ALT_DIGITS (integer)

INT_CURR_SYMBOL (integer)

CURRENCY_SYMBOL (integer)

CRNCYSTR (integer)

MON_DECIMAL_POINT (integer)

MON_THOUSANDS_SEP (integer)

MON_GROUPING (integer)

POSITIVE_SIGN (integer)

NEGATIVE_SIGN (integer)

INT_FRAC_DIGITS (integer)

FRAC_DIGITS (integer)

P_CS_PRECEDES (integer)

P_SEP_BY_SPACE (integer)

N_CS_PRECEDES (integer)

N_SEP_BY_SPACE (integer)

P_SIGN_POSN (integer)

N_SIGN_POSN (integer)

DECIMAL_POINT (integer)

RADIXCHAR (integer)

THOUSANDS_SEP (integer)

THOUSEP (integer)

GROUPING (integer)

YESEXPR (integer)

NOEXPR (integer)

YESSTR (integer)

NOSTR (integer)

CODESET (integer)

LOG_EMERG (integer)

LOG_ALERT (integer)

LOG_CRIT (integer)

LOG_ERR (integer)

LOG_WARNING (integer)

LOG_NOTICE (integer)

LOG_INFO (integer)

LOG_DEBUG (integer)

LOG_KERN (integer)

LOG_USER (integer)

LOG_MAIL (integer)

LOG_DAEMON (integer)

LOG_AUTH (integer)

LOG_SYSLOG (integer)

LOG_LPR (integer)

LOG_NEWS (integer)

LOG_UUCP (integer)

LOG_CRON (integer)

LOG_AUTHPRIV (integer)

LOG_LOCAL0 (integer)

LOG_LOCAL1 (integer)

LOG_LOCAL2 (integer)

LOG_LOCAL3 (integer)

LOG_LOCAL4 (integer)

LOG_LOCAL5 (integer)

LOG_LOCAL6 (integer)

LOG_LOCAL7 (integer)

LOG_PID (integer)

LOG_CONS (integer)

LOG_ODELAY (integer)

LOG_NDELAY (integer)

LOG_NOWAIT (integer)

LOG_PERROR (integer)

Sublime Text,php代码格式化插件codeformatter 设置PHP代码格式时报错 怎么处理

{

"codeformatter_debug": false,

"codeformatter_php_options":

{

"syntaxes": "php", // Syntax names which must process PHP formatter

"php_path": "这里改成你php的路径", // Path for PHP executable, e.g. "/usr/lib/php" or "C:/Program Files/PHP/php.exe". If empty, uses command "php" from system environments

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"php55_compat": false, // PHP 5.5 compatible mode

"psr1": false, // Activate PSR1 style

"psr1_naming": false, // Activate PSR1 style - Section 3 and 4.3 - Class and method names case

"psr2": true, // Activate PSR2 style

"indent_with_space": 4, // Use spaces instead of tabs for indentation

"enable_auto_align": true, // Enable auto align of = and =>

"visibility_order": true, // Fixes visibility order for method in classes - PSR-2 4.2

"smart_linebreak_after_curly": true, // Convert multistatement blocks into multiline blocks

// Enable specific transformations. Example: ["ConvertOpenTagWithEcho", "PrettyPrintDocBlocks"]

// You can list all available transformations from command palette: CodeFormatter: Show PHP Transformations

"passes": [],

// Disable specific transformations

"excludes": []

},

"codeformatter_js_options":

{

"syntaxes": "javascript,json", // Syntax names which must process JS formatter

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"indent_size": 4, // indentation size

"indent_char": " ", // Indent character

"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)

"eol": "\n", // EOL symbol

"preserve_newlines": false, // whether existing line breaks should be preserved,

"max_preserve_newlines": 10, // maximum number of line breaks to be preserved in one chunk

"space_in_paren": false, // Add padding spaces within paren, ie. f( a, b )

"space_in_empty_paren": false, // Add padding spaces within paren if parent empty, ie. f( )

"e4x": false, // Pass E4X xml literals through untouched

"jslint_happy": false, // if true, then jslint-stricter mode is enforced. Example function () vs function()

"space_after_anon_function": false, // Space after anonimouse functions

"brace_style": "collapse", // "collapse" | "expand" | "end-expand". put braces on the same line as control statements (default), or put braces on own line (Allman / ANSI style), or just put end braces on own line.

"keep_array_indentation": false, // keep array indentation.

"keep_function_indentation": false, // keep function indentation.

"eval_code": false, // eval code

"unescape_strings": false, // Decode printable characters encoded in xNN notation

"wrap_line_length": 0, // Wrap lines at next opportunity after N characters

"unindent_chained_methods": false, // Unindent chained method calls

"break_chained_methods": false, // Break chained method calls across subsequent lines

"end_with_newline": false, // Add new line at end of file

"comma_first": false, // Add comma first

"operator_position": "before-newline" // Operator position: before-newline, after-newline, preserve-newline

},

"codeformatter_css_options":

{

"syntaxes": "css,less", // Syntax names which must process CSS formatter

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"indent_size": 4, // Indentation size

"indent_char": " ", // Indentation character

"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)

"selector_separator_newline": false, // Add new lines after selector separators

"end_with_newline": false, // Add new line of end in file

"newline_between_rules": false, // Add new line between rules

"space_around_combinator": false, // Space around combinator

"eol": "\n" // EOL symbol

},

"codeformatter_scss_options":

{

"syntaxes": "scss,sass", // Indentation size

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"indent_size": 4, // Indentation size

"indent_char": " ", // Indentation character

"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)

"selector_separator_newline": false, // Add new lines after selector separators

"end_with_newline": false, // Add new line of end in file

"newline_between_rules": false, // Add new line between rules

"space_around_combinator": false, // Space around combinator

"eol": "\n" // EOL symbol

},

"codeformatter_html_options":

{

"syntaxes": "html,blade,asp,xml", // Syntax names which must process HTML formatter

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"formatter_version": "bs4", // Which formatter to use. Current options are "bs4" and "regexp". If an error occurs while loading the bs4 formatter, the regexp formatter will automatically be used

"indent_size": 4, // indentation size

"indent_char": " ", // Indentation character

"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)

"exception_on_tag_mismatch": false, // If the last closing tag is not at the same indentation level as the first opening tag, there's probably a tag mismatch in the file

"expand_javascript": false, // (Under construction) Expand JavaScript inside of <script> tags (also affects CSS purely by coincidence)

"expand_tags": false, // Expand tag attributes onto new lines

"minimum_attribute_count": 2, // Minimum number of attributes needed before tag attributes are expanded to new lines

"first_attribute_on_new_line": false, // Put all attributes on separate lines from the tag (only uses 1 indentation unit as opposed to lining all attributes up with the first)

"reduce_empty_tags": false, // Put closing tags on same line as opening tag if there is no content between them

"reduce_whole_word_tags": false, // Put closing tags on same line as opening tag if there is whole word between them

"custom_singletons": "" // Custom singleton tags for various template languages outside of the HTML5 spec

},

"codeformatter_python_options":

{

"syntaxes": "python", // Syntax names which must process Python formatter

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"indent_size": 1, // indentation size

"indent_with_tabs": true, // Indent with tabs or spaces

"max_char": 80, // Width of output lines in characters.

"assignment": " = ", // This is how the assignment operator is to appear.

"function_param_assignment": "=", // This is how function-parameter assignment should appear.

"function_param_sep": ", ", // This is how function parameters are separated.

"list_sep": ", ", // This is how list items are separated.

"subscript_sep": "=", // This is how subscripts are separated.

"dict_colon": ": ", // This separates dictionary keys from values.

"slice_colon": ":", // this separates the start:end indices of slices.

"comment_prefix": "# ", // This is the sentinel that marks the beginning of a commentary string.

"shebang": "#!/usr/bin/env python", // Hashbang, a line-one comment naming the Python interpreter to Unix shells.

"boilerplate": "", // Standard code block (if any). This is inserted after the module doc string on output.

"blank_line": "", // This is how a blank line is to appear (up to the newline character).

"keep_blank_lines": true, // If true, preserve one blank where blank(s) are encountered.

"add_blank_lines_around_comments": true, // If true, set off comment blocks with blanks.

"add_blank_line_after_doc_string": true, // If true, add blank line after doc strings.

"max_seps_func_def": 3, // Split lines containing longer function definitions.

"max_seps_func_ref": 5, // Split lines containing longer function calls.

"max_seps_series": 5, // Split lines containing longer lists or tuples.

"max_seps_dict": 3, // Split lines containing longer dictionary definitions.

"max_lines_before_split_lit": 2, // Split string literals containing more newline characters.

"left_margin": "", // This is how the left margin is to appear.

"normalize_doc_strings": false, // If true, normalize white space in doc strings.

"leftjust_doc_strings": false, // If true, left justify doc strings.

"wrap_doc_strings": false, // If true, wrap doc strings to max_char.

"leftjust_comments": false, // If true, left justify comments.

"wrap_comments": false, // If true, wrap comments to max_char.

"double_quoted_strings": false, // If true, use quotes instead of apostrophes for string literals.

"single_quoted_strings": false, // If true, use apostrophes instead of quotes for string literals.

"can_split_strings": false, // If true, longer strings are split at the max_char.

"doc_tab_replacement": "....", // This literal replaces tab characters in doc strings and comments.

// Optionally preserve unassigned constants so that code to be tidied

// may contain blocks of commented-out lines that have been no-op'ed

// with leading and trailing triple quotes. Python scripts may declare

// constants without assigning them to a variables, but CodeFormatter

// considers this wasteful and normally elides them.

"keep_unassigned_constants": false,

// Optionally omit parentheses around tuples, which are superfluous

// after all. Normal CodeFormatter behavior will be still to include them

// as a sort of tuple display analogous to list displays, dict

// displays, and yet-to-come set displays.

"parenthesize_tuple_display": true,

// When CodeFormatter splits longer lines because max_seps

// are exceeded, the statement normally is closed before the margin is

// restored. The closing bracket, brace, or parenthesis is placed at the

// current indent level. This looks ugly to "C" programmers. When

// java_style_list_dedent is True, the closing bracket, brace, or

// parenthesis is brought back left to the indent level of the enclosing

// statement.

"java_style_list_dedent": false

},

"codeformatter_vbscript_options":

{

"syntaxes": "vbscript", // Syntax names which must process VBScript formatter

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"indent_size": 1, // indentation size

"indent_char": "\t", // Indentation character

"indent_with_tabs": true, // Indent with one tab (overrides indent_size and indent_char options)

"preserve_newlines": true, // Preserve existing line-breaks

"max_preserve_newlines": 10, // Maximum number of line-breaks to be preserved in one chunk

"opening_tags": "^(Function .*|Sub .*|If .* Then|For .*|Do While .*|Select Case.*)", // List of keywords which open a new block

"middle_tags": "^(Else|ElseIf .* Then|Case .*)$", // List of keywords which divide a block, but neither open or close the block

"closing_tags": "(End Function|End Sub|End If|Next|Loop|End Select)$" // List of keywords which close an open block

},

"codeformatter_coldfusion_options":

{

"syntaxes": "coldfusion,cfm,cfml", // Syntax names which must process Coldfusion Markup Language formatter

"format_on_save": false, // Format on save. Either a boolean (true/false) or a string regexp tested on filename. Example : "^((?!.min.|vendor).)*$"

"indent_size": 2, // indentation size

"indent_char": " ", // Indentation character

"indent_with_tabs": false, // Indent with one tab (overrides indent_size and indent_char options)

"exception_on_tag_mismatch": false, // If the last closing tag is not at the same indentation level as the first opening tag, there's probably a tag mismatch in the file

"expand_javascript": false, // (Under construction) Expand JavaScript inside of <script> tags (also affects CSS purely by coincidence)

"expand_tags": false, // Expand tag attributes onto new lines

"minimum_attribute_count": 2, // Minimum number of attributes needed before tag attributes are expanded to new lines

"first_attribute_on_new_line": false, // Put all attributes on separate lines from the tag (only uses 1 indentation unit as opposed to lining all attributes up with the first)

"reduce_empty_tags": false, // Put closing tags on same line as opening tag if there is no content between them

"reduce_whole_word_tags": false, // Put closing tags on same line as opening tag if there is whole word between them

"custom_singletons": "" // Custom singleton tags for various template languages outside of the HTML5 spec

}

}

php rpc好用吗,有什么优缺点?php rpc框架哪个好?

什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)那什么是远程调用?通常我们调用一个php中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它是一个本地调用!远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。

远程调用原理

比如 A (client) 调用 B (server) 提供的remoteAdd方法:

首先A与B之间建立一个TCP连接;

然后A把需要调用的方法名(这里是remoteAdd)以及方法参数(10, 20)序列化成字节流发送出去;

B接受A发送过来的字节流,然后反序列化得到目标方法名,方法参数,接着执行相应的方法调用(可能是localAdd)并把结果30返回;

A接受远程调用结果,输出30。

RPC框架就是把我刚才说的这几点些细节给封装起来,给用户暴露简单友好的API使用。

远程调用的好处

解耦:当server需要对方法内实现修改时,client完全感知不到,不用做任何变更;这种方式在跨部门,跨公司合作的时候经常用到,并且方法的提供者我们通常称为:服务的暴露。

RPC与Socket有什么区别?

通过上面的简单阐述,好像RPC与Socket 好像啊。都是调用远程的方法,都是client/server模式,我之前也写了一篇文章: 细说socket 那他们有啥区别呢?

RPC(远程过程调用)采用客户机/服务器模式实现两个进程之间相互通信。socket是RPC经常采用的通信手段之一,RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源。除了Socket,RPC还有其他的通信方法,比如:http、操作系统自带的管道等技术来实现对于远程程序的调用。微软的Windows系统中,RPC就是采用命名管道进行通信。

RPC与REST有什么区别?

通过了解RPC后,我们知道是RPC是client/server模式的,调用远程的方法,REST也是我们熟悉的一套API调用协议方法,它也是基于client/server模式的,调用远程的方法的,那他俩又有啥区别呢?

REST API 和 RPC 都是在 Server端 把一个个函数封装成接口暴露出去,以供 Client端 调用,不过 REST API 是基于HTTP协议的,REST致力于通过http协议中的POST/GET/PUT/DELETE等方法和一个可读性强的URL来提供一个http请求。而 RPC 则可以不基于 HTTP协议 

因此,如果是后端两种语言互相调用,用 RPC 可以获得更好的性能(省去了 HTTP 报头等一系列东西),应该也更容易配置。如果是前端通过 AJAX 调用后端,那么用 REST API 的形式比较好(因为无论如何也避不开 HTTP 这道坎)。

php中流行的rpc框架有哪些

既然php是世界上最好的语言,那php中流行的RPC框架有哪些呢?

先列举下: phprpc,yar, thrift, gRPC, swoole, hprose

因为时间和精力有限,不可能一个一个的去学习和使用,我选几个世面上用的最多的几个用下吧。因为RPC原理是一样的,都是Client/Server模式,只是每个框架的使用方式不一样而已。

关于phpcompat的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于phpcompat的简单介绍的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did207074
更新时间:2023-05-03   阅读:22次

上一篇: 学习php开发需要 php开发需要学什么

下一篇:php脚本建表 php如何建表

相关资讯

最新资料更新

  • 1.php验证邮箱合理 php发送邮件验证码
  • 2.商品展示模块php 商品展示模块的设计要点
  • 3.php加密12进 php加密解密
  • 4.php登陆检测 php登录原理
  • 5.天津php公司的 天津程序员公司
  • 6.php资源扫描教程 php识别二维码内容源码
  • 7.包含tracphp的词条
  • 8.海康sdk只有php 海康sdk python
  • 9.bashphp的简单介绍
  • 10.php数字语音播报 php语音转文字
  • 11.php加密解密 php数据加密解密
  • 12.php变量内存溢出 php 内存限制
  • 13.php根据逗号分割 php分割文本
  • 14.php加密数据用js解密 php加密 js解密
  • 15.php生成静态代码 php如何实现静态化
  • 16.字符串对齐方法php php字符串赋值
  • 17.php教务系统网页设计 php教务系统网页设计方案
  • 18.无限级菜单php java无限极菜单
  • 19.php前端页面源码 php前端页面源码是多少
  • 20.免费php空间shery 免费PHP空间 免备案 V52版本

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://www.haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]