Inhaltsverzeichnis
Key Takeaways
Die Controller -Aktion
Die Indexvorlage
Funktionen für soziale Netzwerke: Zeigt, wem ein Benutzer
Vorschläge addieren
eine Verbindung zu einem Benutzer herstellen (Hinzufügen von Beziehung)
Schlussfolgerung
Was sind die neuen Funktionen in Php 7.4, 8.1 und 8.3, die meine Anwendung verbessern können? PHP 8.1 brachte Enum, Fasern und schreibgeschützte Eigenschaften. Obwohl Php 8.3 noch nicht veröffentlicht wird, wird erwartet, dass sie neue Funktionen einführen, die Ihre Anwendung weiter verbessern. Diese Funktionen können die Leistung, Lesbarkeit und Wartbarkeit Ihrer PHP -Anwendung verbessern. Mit der Verwendung von NEO4J wird das Erstellen einer Diagrammdatenbank, das Definieren der Beziehungen zwischen den Knoten und das Abfragen der Datenbank durchgeführt. Sie können Cypher, die Abfragesprache von Neo4J, verwenden, um mit der Graph -Datenbank aus Ihrer PHP -Anwendung zu interagieren. Eine Grafikdatenbank ist von Natur aus besser für soziale Netzwerkfunktionen als andere Arten von Datenbanken geeignet. Es ermöglicht effiziente Abfragen und Handhabung komplexer Beziehungen, die in sozialen Netzwerken üblich sind. Es bietet auch hohe Leistung, Skalierbarkeit und Flexibilität.
Wie kann ich meine PHP Verbindungen, Implementierung der Authentifizierung und Autorisierung und Verwendung der integrierten Sicherheitsfunktionen von NEO4J. Sie sollten auch Best Practices für die PHP-Sicherheit befolgen, z. B. die Validierung der Eingaben, die Verwendung vorbereiteter Anweisungen und die Aufrechterhaltung Ihrer PHP-Installation auf dem neuesten Stand.
Wo finde ich Ressourcen, um mehr über die Verwendung von Neo4j mit PHP zu erfahren? Es gibt auch viele Online -Kurse, Bücher und Blogs, die dieses Thema ausführlich behandeln.
Heim Backend-Entwicklung PHP-Tutorial Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Feb 18, 2025 am 08:59 AM

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Im letzten Teil haben wir über Neo4j und wie man es mit PHP verwendet. In diesem Beitrag werden wir dieses Wissen verwenden, um eine echte Silex-Anwendung für soziale Netzwerke mit einer Diagrammdatenbank zu erstellen.

Key Takeaways

  • Die Verwendung von Silex, Zweig, Bootstrap und Neoclient bietet eine robuste Grundlage für die Integration sozialer Netzwerkfunktionen in eine PHP -Anwendung mit Neo4j.
  • Konfiguration des Neo4jclient innerhalb des Silex -Frameworks ermöglicht eine nahtlose Interaktion mit der NEO4J -Diagrammdatenbank, wodurch ein effizientes Datenabruf und Manipulation ermöglicht wird.
  • Die Implementierung von Benutzerprofilen und die Fähigkeit zu sehen, wer ein Benutzer folgt, zeigt die praktische Anwendung von Graph -Datenbankabfragen bei der Verwaltung sozialer Beziehungen.
  • Hinzufügen von Benutzungsbeziehungsfunktionen, z. B. dem Befolgen oder Abfindungen anderer Benutzer, präsentiert die dynamischen Funktionen von NEO4J bei der Behandlung komplexer sozialer Netzwerkoperationen innerhalb einer PHP -Anwendung.
  • Die Erweiterung sozialer Netzwerkfunktionen, um Vorschläge zu enthalten, für die auf der Grundlage vorhandener Beziehungen die Leistung von Graph -Datenbanken bei der Bereitstellung sinnvoller Datenerblicke und der Verbesserung des Benutzers einbezogen werden soll.
Bootstrapping der Anwendung

Ich verwende Silex, Twig, Bootstrap und Neoclient, um die Anwendung zu erstellen.

Erstellen Sie ein Verzeichnis für die App. Ich nannte meine spsoziale.

Fügen Sie diese Zeilen Ihrem Composer.json hinzu und führen Sie den Komponisten aus, um die Abhängigkeiten zu installieren:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Sie können Bootstrap im Web/Assets -Ordner Ihres Projekts herunterladen und installieren.

finden Sie hier auch die Bootstrap-Demo-App: https://github.com/sitepoint-editors/social-network

Einrichten Sie die Silex -Anwendung

Wir müssen Silex konfigurieren und Neo4jclient deklarieren, damit es in der Silex -Anwendung verfügbar ist. Erstellen Sie im Web/ Ordner Ihres Projekts eine Index.php -Datei:

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
twig ist so konfiguriert, dass er seine Vorlagendateien im Ordner SRC/Views befindet.

Eine Home -Route, die auf / ist registriert und konfiguriert, um den WebController zu verwenden, den wir später erstellen werden.
Die Anwendungsstruktur sollte so aussehen:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Beachten Sie, dass ich hier Bower verwendet habe, um Bootstrap zu installieren, aber es liegt an Ihnen, was Sie verwenden möchten.

Der nächste Schritt besteht darin, unser Basislayout mit einem Inhaltsblock zu erstellen, den unsere Kinder -Zweigvorlagen mit ihren eigenen Inhalten überschreiben.

Ich nehme das Standard -Bootstrap -Thema mit einer Navigationsleiste oben:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Die Startseite (Abrufen aller Benutzer)

Bisher haben wir NEO4J in der Anwendung verfügbar, unsere Basisvorlage wird erstellt und wir möchten alle Benutzer auf der Startseite auflisten.

wir können dies in zwei Schritten erreichen:

  • Erstellen Sie unsere Home Controller -Aktion und rufen Sie Benutzer von Neo4j
  • ab
  • Übergeben Sie die Liste der Benutzer an die Vorlage und listen Sie sie
  • auf

Die Controller -Aktion

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der Controller zeigt den Prozess, wir rufen den NEO -Dienst ab und geben eine Cypher -Abfrage aus, um alle Benutzer abzurufen.
Die Benutzersammlung wird dann an die Index.html.twig -Vorlage übergeben.

Die Indexvorlage

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Vorlage ist sehr leicht. Sie erweitert unser Basislayout und fügt eine unsortierte Liste mit den FirstNames und LastNames des Benutzers im Inhalt geerbten Block hinzu.

Starten Sie den integrierten PHP-Server und bewundern Sie Ihre Arbeit:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Funktionen für soziale Netzwerke: Zeigt, wem ein Benutzer

folgt

Nehmen wir jetzt an, wir möchten auf einen Benutzer klicken und seine Detailinformationen und die Benutzer, die er folgt, präsentiert werden.

Schritt 1: Erstellen Sie eine Route in Index.php

<span><span><?php
</span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren

Schritt 2: Erstellen Sie die Aktion von ShowUser Controller

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>        {% for user in users %}
            <span><span><span><li</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></li</span>></span>
</span>        {% endfor %}
    <span><span><span></ul</span>></span>
</span>{% endblock %}
Nach dem Login kopieren
Nach dem Login kopieren

Der Workflow ähnelt allen anderen Anwendungen. Sie versuchen, den Benutzer basierend auf der Anmeldung zu finden.
Wenn es nicht vorhanden ist, zeigen Sie eine 404 -Fehlerseite an, andernfalls übergeben Sie die Benutzerdaten an die Vorlage.

Schritt 3: Erstellen Sie die Vorlagendatei show_user

<span>cd spsocial/web
</span>php <span>-S localhost:8000
</span><span>open localhost:8000</span>
Nach dem Login kopieren

Schritt 4: Wiederblenden Sie die Liste der Benutzer auf der Homepage um, um Links zu ihrem Profil

anzuzeigen
<span>$app->get('/user/{login}', 'Ikwattro\SocialNetwork\Controller\WebController::showUser')
</span>    <span>->bind('show_user');</span>
Nach dem Login kopieren

Aktualisieren Sie die Homepage und klicken Sie auf jeden Benutzer, um sein Profil und die Liste der folgenden Benutzer

anzuzeigen

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Vorschläge addieren

Der nächste Schritt besteht darin, dem Profil Vorschläge zu geben. Wir müssen unsere Cypher -Abfrage im Controller leicht erweitern, indem wir eine optionale Übereinstimmung hinzufügen, um Vorschläge basierend auf dem Netzwerk zweiten Grades zu finden.

Das optionale Präfix bewirkt, dass ein Match eine Zeile zurückgibt, auch wenn es keine Übereinstimmungen gab, aber mit den nicht aufgelösten Teilen auf Null eingestellt ist (ähnlich wie ein äußerer Join). Da wir möglicherweise mehrere Wege für jeden Freund von A-Friend (FOF) erhalten, müssen wir die Ergebnisse unterscheiden, um Duplikate in unserer Liste zu vermeiden (sammeln Sie eine Aggregationsoperation, die Werte in ein Array sammelt):

Der aktualisierte Controller:

<span>public function showUser(Application $application, Request $request, $login)
</span>    <span>{
</span>        <span>$neo = $application['neo'];
</span>        <span>$q = 'MATCH (user:User) WHERE user.login = {login}
</span><span>         OPTIONAL MATCH (user)-[:FOLLOWS]->(f)
</span><span>         RETURN user, collect(f) as followed';
</span>        <span>$p = ['login' => $login];
</span>        <span>$result = $neo->sendCypherQuery($q, $p)->getResult();
</span>
        <span>$user = $result->get('user');
</span>        <span>$followed = $result->get('followed');
</span>
        <span>if (null === $user) {
</span>            <span>$application->abort(404, 'The user $login was not found');
</span>        <span>}
</span>
        <span>return $application['twig']->render('show_user.html.twig', array(
</span>            <span>'user' => $user,
</span>            <span>'followed' => $followed
</span>        <span>));
</span>    <span>}</span>
Nach dem Login kopieren

Die aktualisierte Vorlage:

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><h1</span>></span>User informations<span><span></h1</span>></span>
</span>
    <span><span><span><h2</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></h2</span>></span>
</span>    <span><span><span><h3</span>></span>{{ user.property('login') }}<span><span></h3</span>></span>
</span>    <span><span><span><hr</span>/></span>
</span>
    <span><span><span><div</span> class<span>="row"</span>></span>
</span>        <span><span><span><div</span> class<span>="col-sm-6"</span>></span>
</span>            <span><span><span><h4</span>></span>User <span><span><span</span> class<span>="label label-info"</span>></span>{{ user.property('login') }}<span><span></span</span>></span> follows :<span><span></h4</span>></span>
</span>            <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>                {% for follow in followed %}
                    <span><span><span><li</span>></span>{{ follow.property('login') }} ( {{ follow.property('firstname') }} {{ follow.property('lastname') }} )<span><span></li</span>></span>
</span>                {% endfor %}
            <span><span><span></ul</span>></span>
</span>        <span><span><span></div</span>></span>
</span>    <span><span><span></div</span>></span>
</span>
{% endblock %}
Nach dem Login kopieren

Sie können sofort die Vorschläge in Ihrer Bewerbung untersuchen:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

eine Verbindung zu einem Benutzer herstellen (Hinzufügen von Beziehung)

Um eine Verbindung zu einem vorgeschlagenen Benutzer herzustellen, fügen wir jedem vorgeschlagenen Benutzer, der beide Benutzer als versteckte Felder enthalten, einen Postformular -Link hinzu. Wir erstellen auch die entsprechende Route und die Controller -Aktion.

Erstellen der Route:

{% for user in users %}
    <span><span><span><li</span>></span>
</span>        <span><span><span><a</span> href<span>="{{ path('show_user', { login: user.property('login') }) }}"</span>></span>
</span>           {{ user.property('firstname') }} {{ user.property('lastname') }}
        <span><span><span></a</span>></span>
</span>    <span><span><span></li</span>></span>
</span>{% endfor %}
Nach dem Login kopieren

Die Controller -Aktion:

<span>{
</span>  <span>"require": {
</span>    <span>"silex/silex": "~1.1",
</span>    <span>"twig/twig": ">=1.8,<2.0-dev",
</span>    <span>"symfony/twig-bridge": "~2.3",
</span>    <span>"neoxygen/neoclient": "~2.1"
</span>
  <span>},
</span>  <span>"autoload": {
</span>    <span>"psr-4": {
</span>      <span>"Ikwattro\SocialNetwork\": "src"
</span>    <span>}
</span>  <span>}
</span><span>}</span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Nichts Ungewöhnliches hier, wir stimmen mit dem Startbenutzerknoten und dem Zielbenutzerknoten überein und fusionieren dann die entsprechende folgende Beziehung. Wir verwenden die Beziehung, um doppelte Einträge zu vermeiden.

Die Vorlage:

<span><span><?php
</span></span><span>
</span><span><span>require_once __DIR__.'/../vendor/autoload.php';
</span></span><span>
</span><span><span>use Neoxygen<span>\NeoClient\ClientBuilder</span>;
</span></span><span>
</span><span><span>$app = new Silex<span>\Application</span>();
</span></span><span>
</span><span><span>$app['neo'] = $app->share(function(){
</span></span><span>    <span>$client = ClientBuilder<span>::</span>create()
</span></span><span>        <span>->addDefaultLocalConnection()
</span></span><span>        <span>->setAutoFormatResponse(true)
</span></span><span>        <span>->build();
</span></span><span>
</span><span>    <span>return $client;
</span></span><span><span>});
</span></span><span>
</span><span><span>$app->register(new Silex<span>\Provider\TwigServiceProvider</span>(), array(
</span></span><span>    <span>'twig.path' => __DIR__.'/../src/views',
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\MonologServiceProvider</span>(), array(
</span></span><span>    <span>'monolog.logfile' => __DIR__.'/../logs/social.log'
</span></span><span><span>));
</span></span><span><span>$app->register(new Silex<span>\Provider\UrlGeneratorServiceProvider</span>());
</span></span><span>
</span><span><span>$app->get('/', 'Ikwattro\SocialNetwork\Controller\WebController::home')
</span></span><span>    <span>->bind('home');
</span></span><span>
</span><span><span>$app->run();</span></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie können jetzt auf die Schaltfläche "Folge" des vorgeschlagenen Benutzers klicken, dem Sie folgen möchten:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Beziehungen entfernen:

Der Workflow zum Entfernen von Beziehungen ist ziemlich gleich wie beim Hinzufügen neuer Beziehungen, erstellen Sie eine Route, eine Controller -Aktion und passen Sie das Layout an:

Die Route:

<span><!DOCTYPE html>
</span><span><html lang="en">
</span><span><head>
</span>    <span><meta charset="utf-8">
</span>    <span><meta http-equiv="X-UA-Compatible" content="IE=edge">
</span>    <span><meta name="viewport" content="width=device-width, initial-scale=1">
</span>    <span><meta name="description" content="">
</span>    <span><meta name="author" content="">
</span>
    <span><title>My first Neo4j application</title>
</span>
    <span><!-- Bootstrap core CSS -->
</span>    <span><link href="{{ app.request.basepath }}/assets/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
</span>    <span><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
</span>    <span><!--[if lt IE 9]>
</span>    <span><script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
</span>    <span><script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
</span>    <span><![endif]-->
</span>
    <span><style>
</span>        body <span>{ padding-top: 70px; }
</span>    <span></style>
</span><span></head>
</span><span><body>
</span>
<span><div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
</span>    <span><div class="container">
</span>        <span><div class="navbar-header">
</span>            <span><button type="button" id="collbut" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
</span>                <span><span class="sr-only">Toggle navigation</span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>                <span><span class="icon-bar"></span>
</span>            <span></button>
</span>            <span><a class="navbar-brand" href="#">My first Neo4j application</a>
</span>        <span></div>
</span>    <span></div>
</span><span></div>
</span>
<span><div class="container-fluid">
</span>
    <span>{% block content %}
</span>
    <span>{% endblock content %}
</span>
<span></div>
</span><span></body>
</span><span></html></span>
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Controller -Aktion:

<span><span><?php
</span></span><span>
</span><span><span>namespace Ikwattro<span>\SocialNetwork\Controller</span>;
</span></span><span>
</span><span><span>use Silex<span>\Application</span>;
</span></span><span><span>use Symfony<span>\Component\HttpFoundation\Request</span>;
</span></span><span>
</span><span><span>class WebController
</span></span><span><span>{
</span></span><span>
</span><span>    <span>public function home(Application $application, Request $request)
</span></span><span>    <span>{
</span></span><span>        <span>$neo = $application['neo'];
</span></span><span>        <span>$q = 'MATCH (user:User) RETURN user';
</span></span><span>        <span>$result = $neo->sendCypherQuery($q)->getResult();
</span></span><span>
</span><span>        <span>$users = $result->get('user');
</span></span><span>
</span><span>        <span>return $application['twig']->render('index.html.twig', array(
</span></span><span>            <span>'users' => $users
</span></span><span>        <span>));
</span></span><span>    <span>}
</span></span><span><span>}</span></span>
Nach dem Login kopieren
Nach dem Login kopieren

Sie können hier sehen, dass ich übereinstimmte, um die Beziehung zwischen den beiden Benutzern zu finden,
und ich habe hinzugefügt, dass eine Kennung der Beziehung folgt, um sie löschen zu können.

Die Vorlage:

{% extends "layout.html.twig" %}

{% block content %}
    <span><span><span><ul</span> class<span>="list-unstyled"</span>></span>
</span>        {% for user in users %}
            <span><span><span><li</span>></span>{{ user.property('firstname') }} {{ user.property('lastname') }}<span><span></li</span>></span>
</span>        {% endfor %}
    <span><span><span></ul</span>></span>
</span>{% endblock %}
Nach dem Login kopieren
Nach dem Login kopieren

Sie können jetzt unter den folgenden Benutzer auf die Schaltfläche zur Beziehung entfernen klicken:

Hinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J

Schlussfolgerung

Graph -Datenbanken passen perfekt für relationale Daten, und es ist einfach, sie mit PHP und Neoclient zu verwenden.
Cypher ist eine bequeme Abfragesprache, die Sie schnell lieben werden, da es Sie ermöglicht, Ihr Diagramm auf natürliche Weise abzufragen.

Es gibt so viel davon von der Verwendung von Graph -Datenbanken für reale Daten,
,
Ich lade Sie ein, mehr zu entdecken, indem Sie das Handbuch http://neo4j.com/docs/stable/,

lesen Sehen Sie sich Anwendungsfälle und Beispiele an, die von NEO4J -Benutzern geliefert wurden und @neo4j auf Twitter folgen.

häufig gestellte Fragen zum Hinzufügen von Funktionen sozialer Netzwerkfunktionen zur PHP -App mit NEO4J

Was ist Neo4j und warum ist es in PHP -Anwendungen wichtig? In PHP -Anwendungen ist es wichtig, da Entwickler Daten mit seinem Graphatenmodell speichern, verwalten und abfragen können. Mit NEO4J können Sie hohe Datenmengen in Echtzeit verarbeiten und analysieren, was es ideal macht, um soziale Netzwerkfunktionen in PHP-Anwendungen zu erstellen.

Um NEO4J zu installieren, müssen Sie die neueste Version von der offiziellen Website herunterladen und den Installationsanweisungen befolgen. Nach der Installation können Sie es konfigurieren, indem Sie die Konfigurationsdatei bearbeiten, die sich normalerweise im Verzeichnis "Conf" Ihrer NEO4J -Installation befindet. Sie können es dann mit einem NEO4J -PHP -Client mit Ihrer PHP -Anwendung verbinden.

Was sind die neuen Funktionen in Php 7.4, 8.1 und 8.3, die meine Anwendung verbessern können? PHP 8.1 brachte Enum, Fasern und schreibgeschützte Eigenschaften. Obwohl Php 8.3 noch nicht veröffentlicht wird, wird erwartet, dass sie neue Funktionen einführen, die Ihre Anwendung weiter verbessern. Diese Funktionen können die Leistung, Lesbarkeit und Wartbarkeit Ihrer PHP -Anwendung verbessern. Mit der Verwendung von NEO4J wird das Erstellen einer Diagrammdatenbank, das Definieren der Beziehungen zwischen den Knoten und das Abfragen der Datenbank durchgeführt. Sie können Cypher, die Abfragesprache von Neo4J, verwenden, um mit der Graph -Datenbank aus Ihrer PHP -Anwendung zu interagieren. Eine Grafikdatenbank ist von Natur aus besser für soziale Netzwerkfunktionen als andere Arten von Datenbanken geeignet. Es ermöglicht effiziente Abfragen und Handhabung komplexer Beziehungen, die in sozialen Netzwerken üblich sind. Es bietet auch hohe Leistung, Skalierbarkeit und Flexibilität.

Wie kann ich meine PHP -Anwendung in eine neuere Version migrieren? Ihr Code zum Entfernen von veralteten Funktionen und zur Verwendung neuer und testen Sie Ihre Anwendung, um sicherzustellen, dass sie korrekt funktioniert. Es wird empfohlen, dies in einer Entwicklungsumgebung zuerst zu tun, bevor die Änderungen in der Produktionsumgebung angewendet werden. Zu einigen häufigen Herausforderungen gehören die Behandlung großer Datenmengen, die Verwaltung komplexer Beziehungen und die Gewährleistung der Echtzeitleistung. Diese können durch die Verwendung einer geeigneten Datenbank wie Neo4J, die Optimierung Ihrer Abfragen und die Verwendung effizienter Datenstrukturen und Algorithmen überwunden werden. Kann die Leistung Ihrer PHP-Anwendung mit NEO4J optimieren, indem Sie effiziente Abfragen verwenden, Ihre Daten indizieren und die eingebauten Leistungseinstellungen von NEO4J verwenden. Sie können auch die leistungssteigernden Funktionen von PHP wie JIT-Kompilierung und Vorspannungsfunktionen verwenden.

Wie kann ich meine PHP Verbindungen, Implementierung der Authentifizierung und Autorisierung und Verwendung der integrierten Sicherheitsfunktionen von NEO4J. Sie sollten auch Best Practices für die PHP-Sicherheit befolgen, z. B. die Validierung der Eingaben, die Verwendung vorbereiteter Anweisungen und die Aufrechterhaltung Ihrer PHP-Installation auf dem neuesten Stand.

Wo finde ich Ressourcen, um mehr über die Verwendung von Neo4j mit PHP zu erfahren? Es gibt auch viele Online -Kurse, Bücher und Blogs, die dieses Thema ausführlich behandeln.

Das obige ist der detaillierte Inhalt vonHinzufügen von Funktionen für soziale Netzwerke zu einer PHP -App mit NEO4J. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1652
14
PHP-Tutorial
1251
29
C#-Tutorial
1224
24
Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Was sind Aufzählungen (Enums) in PHP 8.1? Was sind Aufzählungen (Enums) in PHP 8.1? Apr 03, 2025 am 12:05 AM

Die Aufzählungsfunktion in Php8.1 verbessert die Klarheit und Type des Codes, indem benannte Konstanten definiert werden. 1) Aufzählungen können Ganzzahlen, Zeichenfolgen oder Objekte sein, die die Lesbarkeit der Code und die Type der Type verbessern. 2) Die Aufzählung basiert auf der Klasse und unterstützt objektorientierte Merkmale wie Traversal und Reflexion. 3) Die Aufzählung kann zum Vergleich und zur Zuordnung verwendet werden, um die Sicherheit der Typ zu gewährleisten. 4) Aufzählung unterstützt das Hinzufügen von Methoden zur Implementierung einer komplexen Logik. 5) Strenge Typ Überprüfung und Fehlerbehandlung können häufig auftretende Fehler vermeiden. 6) Die Aufzählung verringert den magischen Wert und verbessert die Wartbarkeit, achten Sie jedoch auf die Leistungsoptimierung.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind REST -API -Designprinzipien? Was sind REST -API -Designprinzipien? Apr 04, 2025 am 12:01 AM

Die RESTAPI -Designprinzipien umfassen Ressourcendefinition, URI -Design, HTTP -Methodenverbrauch, Statuscode -Nutzung, Versionskontrolle und Hassoas. 1. Ressourcen sollten durch Substantive dargestellt und in einer Hierarchie aufrechterhalten werden. 2. HTTP -Methoden sollten ihrer Semantik entsprechen, z. B. Get wird verwendet, um Ressourcen zu erhalten. 3. Der Statuscode sollte korrekt verwendet werden, z. B. 404 bedeutet, dass die Ressource nicht vorhanden ist. 4. Die Versionskontrolle kann über URI oder Header implementiert werden. 5. Hateoas startet Client -Operationen durch Links als Antwort.

Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Wie können Sie mit Ausnahmen in PHP effektiv umgehen (versuchen Sie, schließlich zu werfen)? Apr 05, 2025 am 12:03 AM

In PHP wird das Ausnahmebehandlung durch den Versuch, Fang, schließlich und werfen Keywords erreicht. 1) Der Try -Block umgibt den Code, der Ausnahmen auslösen kann. 2) Der Catch -Block behandelt Ausnahmen; 3) Block stellt schließlich sicher, dass der Code immer ausgeführt wird. 4) Wurf wird verwendet, um Ausnahmen manuell zu werfen. Diese Mechanismen verbessern die Robustheit und Wartbarkeit Ihres Codes.

Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Was sind anonyme Klassen in PHP und wann könnten Sie sie verwenden? Apr 04, 2025 am 12:02 AM

Die Hauptfunktion anonymer Klassen in PHP besteht darin, einmalige Objekte zu erstellen. 1. Anonyme Klassen ermöglichen es, Klassen ohne Namen direkt im Code zu definieren, was für vorübergehende Anforderungen geeignet ist. 2. Sie können Klassen erben oder Schnittstellen implementieren, um die Flexibilität zu erhöhen. 3. Achten Sie bei der Verwendung auf Leistung und Code -Lesbarkeit und vermeiden Sie es, dieselben anonymen Klassen wiederholt zu definieren.

See all articles